我对我的重写规则的结果非常困惑。我使用WAMP在我的本地机器上托管。
RewriteEngine on
RewriteBase /niklasrosenstein/
RewriteCond %{REQUEST_URI} !res/(.+)$
RewriteCond %{REQUEST_URI} !index.php$
RewriteRule ^(.*)$ index.php?uri=$1 [QSA]
转到
扩展为
浏览器' 地址栏中的
。我在Firefox 14,Opera 11.62和Internet Explorer 8下进行了测试。
在网址末尾添加斜杠,即
没问题。
有谁知道为什么在浏览器中调整网址'地址栏?我想使用 mod_rewrite 来摆脱模糊的URL格式,但这个问题实际上将其分解..
答案 0 :(得分:2)
有谁知道为什么在浏览器的地址栏中调整了网址?
这看起来像是mod_dir / mod_rewrite冲突。默认情况下,加载mod_dir,目录模块的默认值为:
DirectoryIndex index.html
DirectorySlash On
第二个默认值使得只要请求看起来访问目录,并且缺少尾部斜杠,301就会使用斜杠重定向到相同的URI。这发生在URI文件映射管道中的某处,并且干扰了mod_rewrite通过规则应用的内部重写
由于您要通过index.php
路由所有内容,因此可能不是detrimental to turn off DirectorySlash,因此在/niklasrosenstein/
目录的htaccess文件中,请尝试将其关闭:
DirectorySlash Off
否则,你可以尝试使用mod_rewrite处理它:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond !.+[^/]$
RewriteRule ^(.+)$ $1/ [L]