我的.htaccess rewriteRule失败了

时间:2013-11-13 22:03:16

标签: .htaccess

我无法理解为什么这次改写没有按照它所说的去做。 注意:我的.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

然而,到目前为止,我还没有完成重写工作:

  • 在目标上领先正斜线(虽然我认为没必要)
  • 尝试更改'&'使用&
  • 的目标中的&符号
  • 删除使用和不使用[L]标志
  • 替换的[PT] passthru标志
  • 在模式中尝试了大多数“最少”限制性字符类,即(。*)而不是([0-9] +)
  • 评论'出'第一个完美无瑕地运作的RewriteRule - 所以单独使用麻烦的规则

其中没有这些工作 - 第二次重写规则对目标网址没有影响,所以我甚至看不出差异是什么。我仍然是mod_rewrite的新手,所以有点依赖于信息性的失败,所以我可以解决我的reg-ex是错的但我怀疑它只是被忽略,因为我得到'zilch'回来!!

任何帮助表示赞赏 - 可能指向我的愚蠢行为。 感谢

1 个答案:

答案 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%需要。