之前,我更改了.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中的其他内容将其弄乱了.