我无法理解为什么这次改写没有按照它所说的去做。 注意:我的.htaccess文件中的第一次重写正常工作,因此在本地主机上使用mod_rewrite不是问题。
我知道的URI将采用以下格式:
http://localhost/managerhub/my-manager.php?i=1&t=dashboard
网站上线时:
http://themanagerhub.com/my-manager.php?i=1&t=dashboard
我的.htaccess文件因此读取:
RewriteEngine On
RewriteRule ^([a-z\-]+)$ $1.php [L]
RewriteRule ^my-manager-([0-9]+)-([a-z]+) my-manager.php?i=$1&t=$2 [PT]
实现干净的URls,如:
http://localhost/managerhub/my-manager-1-dashboard
理想情况下,我真的不想要第一个捕获组([0-9] +),因为我真的不希望结果中的'i'值 干净的网址 - 理想情况下如下:
http://localhost/managerhub/my-manager-dashboard
然而,到目前为止,我还没有完成重写工作:
其中没有这些工作 - 第二次重写规则对目标网址没有影响,所以我甚至看不出差异是什么。我仍然是mod_rewrite的新手,所以有点依赖于信息性的失败,所以我可以解决我的reg-ex是错的但我怀疑它只是被忽略,因为我得到'zilch'回来!!
任何帮助表示赞赏 - 可能指向我的愚蠢行为。 感谢
答案 0 :(得分:0)
我假设您的htaccess文件位于“managerhub”目录中。这就是那些规则需要的地方。您可能还需要添加基础:
RewriteEngine On
RewriteBase /managerhub/
RewriteRule ^([a-z\-]+)$ $1.php [L]
RewriteRule ^my-manager-([0-9]+)-([a-z]+)$ my-manager.php?i=$1&t=$2 [L,PT]
当他们到达实际网站时你需要改变它。您可以通过以下方式删除第一个捕获组:
RewriteRule ^my-manager-([a-z]+)$ my-manager.php?t=$1 [L,PT]
L
标志并非完全100%需要。