我有网址重写规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/sites/
RewriteRule ^([^/]+)/?(.*)$ sites/$1/$2 [NC,L]
调用此网址时:http://example.com/suyash
它在内部调用http://example.com/sites/suyash
,但仅将URL保留为http://example.com/suyash
。请注意,文件夹sites/suyash
实际存在
我面临的问题是,当我调用网址时:http://example.com/Suyash
(大写)会显示404错误。
当我使用mod_speling模块并将以下内容添加到代码中时:
CheckSpelling On
现在当我致电http://example.com/Suyash
时,它会将网址更改为http://example.com/sites/suyash
如何才能将其从http://example.com/Suyash
更改为http://example.com/suyash
?
答案 0 :(得分:0)
mod_speling将重定向浏览器以修复拼写,没有办法避免这种情况。我唯一能想到的是尝试使用P
标志在内部代理请求。您需要确保已加载mod_proxy。我没有测试过这个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/sites/
RewriteRule ^([^/]+)/?(.*)$ sites/$1/$2 [NC,L,P]
答案 1 :(得分:0)
我会说保持CheckSpelling
关闭。
然后让你的规则如下:
CheckSpelling Off
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/$0 -f [NC]
RewriteCond %{DOCUMENT_ROOT}/$0 -d [NC]
RewriteCond %{REQUEST_URI} !^/sites/ [NC]
RewriteRule ^([^/]+)/?(.*)$ sites/$1/$2 [L]