在网址中删除.php扩展名

之前,我更改了.htaccess文件,以使我的“子目录”(13 /)成为我用于主域的“目录”,方法是添加:

RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$
RewriteRule ^(/)?$13/index.php [L]

现在,我想删除.php扩展名和index.php?eventid = 3之类的扩展名以进行索引/某些操作

EDIT#1 [其中某些是存储在数据库中的ID的名称]

我应该怎么做?
以前,我确实在某些PHP框架中工作,但是它们已经有一个专用的url文件.所以我从没想过.但是这次,我没有使用任何框架,因此我需要修改.htaccess.

我环顾四周,但找不到任何可靠的博客/资源.

编辑#2

我的子目录是public_html / 13 /.

即www.mydomain.com重定向到www.mydomain.com/13/
现在我想以www.mydomain.com/events/44访问www.mydomain.com/13/events.php?eventid=1

解决方法:

RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)/?$$1.php?$2=$3

上面的代码会将http://www.mydomain.com/index/eventid/3/重定向到http://www.mydomain.com/index.php?eventid=3

htaccess非常灵活,一旦理解了语法,就可以轻松创建上述内容的变体.您将需要阅读可使用的正则表达式,以及重写模块必须提供的众多选项.我的大多数重定向看上去都与上面类似,非常简单.

编辑:您正在寻找的示例是Wordpress,它使用条块根据比ID号更语义的内容来识别页面.您可能需要对数据库中项目的名称进行url编码,然后将其作为子项存储在数据库中,或者找到其他方式使它在检索页面内容的数据库查询中可用.然后,您的htaccess将如下所示:

RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/?$$1.php?slug=$2

在您的PHP中,您将需要创建块并将它们存储在db中,以便它们可以在您的查询中用作ID.

EDIT2:尝试将整个htaccess文件更改为此:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com$[NC]
RewriteRule ^(.*)$http://yourdomain.com/$1 [R=301,L]

RewriteRule ^([A-Za-z0-9\-]+)/([A-Za-z0-9\-]+)/([0-9]+)/?$$1.php?$2=$3

</IfModule>

我已经对其进行了测试,并且可以正常工作. htaccess中的其他内容将其弄乱了.

上一篇:apache-将htaccess转换为nginx重写


下一篇:php-拒绝对目录的http访问,但允许内部服务器访问