Php 奇怪的重写(Apache mod_重写)
我对重写规则的结果感到非常困惑。我使用WAMP在本地计算机上托管Php 奇怪的重写(Apache mod_重写),php,windows,apache,mod-rewrite,wamp,Php,Windows,Apache,Mod Rewrite,Wamp,我对重写规则的结果感到非常困惑。我使用WAMP在本地计算机上托管 RewriteEngine on RewriteBase /niklasrosenstein/ RewriteCond %{REQUEST_URI} !res/(.+)$ RewriteCond %{REQUEST_URI} !index.php$ RewriteRule ^(.*)$ index.php?uri=$1 [QSA] 去 扩展到 在浏览器的地址栏中。我已经在F
RewriteEngine on
RewriteBase /niklasrosenstein/
RewriteCond %{REQUEST_URI} !res/(.+)$
RewriteCond %{REQUEST_URI} !index.php$
RewriteRule ^(.*)$ index.php?uri=$1 [QSA]
去
扩展到
在浏览器的地址栏中。我已经在Firefox14、Opera11.62和InternetExplorer8下进行了测试
在URL末尾添加斜杠,这将是
没关系
有人知道为什么浏览器的地址栏会调整URL吗?我想使用mod_rewrite来摆脱模糊的URL格式,但这个问题实际上破坏了它
有人知道为什么浏览器的地址栏会调整URL吗
这看起来像是mod_dir/mod_重写冲突。默认情况下,加载mod_dir,目录模块的默认值为:
DirectoryIndex index.html
DirectorySlash On
第二个默认设置是,只要请求访问目录,并且缺少一个尾随斜杠,301就会重定向到带有斜杠的同一URI。这发生在URI文件映射管道的某个地方,并且与mod_rewrite通过您的规则应用的内部重写相冲突
由于您正在通过index.php
路由所有内容,因此可能不是这样,因此在/niklasrosenstein/
目录中的htaccess文件中,请尝试将其关闭:
DirectorySlash Off
否则,您可以尝试使用mod_rewrite处理该问题:
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond !.+[^/]$
RewriteRule ^(.+)$ $1/ [L]