我想在虚拟目录上设置一个漂亮的URL。但我也想要一个虚拟目录的安全网,以防万一有人直接点击它。我们调用虚拟目录foo
RewriteRule ^foo/(.*)$ ./foo/page.php?term=$1 [QSA]
这似乎工作正常。所有页面都正确地重定向和显示,漂亮的URL保留在地址栏中(而不是像301那样重定向到物理地址)
但如果我去www.domain.com/foo,我会得到404 :(
如果我访问www.domain.com/foo/(请注意斜杠),脚本会继续运行,并且由于我的PHP中有一些额外的验证,会显示错误消息。
如何整理虚拟目录(有/没有斜杠)?没有人应该打,但如果他们这样做,我想做好准备,并将他们重新指向主页。
阅读another users question后,我尝试了:
Redirect 301 /foo /?q=empty
但这与我最初的规则相矛盾。我最终得到的链接如下: www.domain.com/?q=empty/Blah(而不是/ foo / Blah)
答案 0 :(得分:0)
试试这个:
RewriteCond %{REQUEST_URI} ^foo/$
RewriteRule ^ /foo/page.php?q=empty [L,QSA]
RewriteRule ^foo/(.*)$ foo/page.php?term=$1 [L,QSA]
答案 1 :(得分:0)
只需为此案例添加额外规则
RewriteRule ^foo/?$ ./foo/page.php [QSA, L]