我花了一些时间在谷歌和SO试图解决这个问题,我现在不得不诉诸另一个mod_rewrite问题....
我正在使用mod_rewrite,并且大多数情况下它工作正常。
我遇到问题的部分是:
# Load pages for health-it while keeping the URL masked
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^health-it/([-a-z0-9]+)/? /health-it/loadPage.php?p=$1 [NC,L]
我有一个我想要的URI:
/health-it/aimsconsultant
问题是,mod_rewrite正在这样做:
/health-it/aimsconsultant/?p=aimsconsultant
页面仍然加载,但URI是问题。
/health-it/aimsconsultant/
按预期工作。应该注意/ health-it / aimconsultant是一个目录,也许这就是原因?我相信Apache重定向会附加目录的尾部斜杠,但为什么会附加查询字符串呢?
它适用于内部页面(没有内部页面的目录):
/health-it/aimsconsultant/manufacturer-signup
和
/health-it/aimsconsultant/manufacturer-signup/
正常工作。
唯一的问题是在第一级...这对我没有任何意义,我感到困惑的是为什么会发生这种情况。请问,有人可以告诉我如何解决这个问题以及为什么这样做会这样做?
感谢您的帮助
答案 0 :(得分:1)
尝试添加这个,似乎对工作:
DirectorySlash Off
默认情况下,它是On,这就是为什么当Apache尝试获取您的URL的规范表示时,它会回退到目录。
答案 1 :(得分:0)
为URL版本添加特定条目,不带斜杠:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^health-it/([-a-z0-9]+)? /health-it/loadPage.php?p=$1 [NC,L]
我已经遇到过这种问题,即使没有QSA标志,mod_rewrite也会附加查询字符串。不知道为什么......