RewriteEngine On
RewriteCond $1 !^(templates|css|js|uploads)/(.*)$
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
大多数情况下,重定向是好的和透明的。 但是如果匹配URL的文件夹存在,如果我没有放最后的“/”,我将有301重定向。
示例:(文件夹库不存在,但mods确实存在)
我在所有apache2服务器上都遇到过这个问题(测试过Fedora,Debian,Windows)。
有人知道如何解决这个问题? 感谢
答案 0 :(得分:1)
这是由DirectorySlash
指令引起的,该指令将在执行重写后执行外部重定向,这会带来意外的后果,即使用添加的查询字符串。
您可以关闭DirectorySlash
,但不建议出于文档中描述的原因。在这种情况下,首选选项可能只是执行mod_dir
的工作,在执行规则之前重定向到相应的斜杠终止URL。在现有规则之上的这样的事情应该有效:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^.*$ /$0/ [R=301,L]