当试图从apacheredirect一个URL:
www.example.com
至
example.com
它redirect到
example.com//
这是一个单页的networking服务器,固定IP直接进入页面。
直接在httpd.conf上编辑
任何想法为什么会发生这种情况?
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com [nocase] RewriteRule ^(.*) http://example.com/$1 [last,redirect=301]
这是在一个.htaccess文件或一个<Directory />块吗? 我的猜测是,事实并非如此。
在这两个区域中,URIpath与完整的文件系统path匹配,并且与目录相匹配的部分(包括斜线)被删除。
在这些区域之外,URIpath以斜杠开始。 因此,你的redirect在一个额外的斜杠。
您可以将重写规则更改为:
RewriteRule ^/(.*) http://example.com/$1 [last,redirect=301]
要么
RewriteRule ^(.*) http://example.com$1 [last,redirect=301]
该规则在哪里configuration?
似乎它可能在服务器或虚拟主机configuration中,在匹配string中会有一个前导斜杠,正在被捕获并被replace为redirectstring。
尝试这个:
RewriteRule ^/(.*) http://example.com/$1 [last,redirect=301]
这似乎并不像你需要使用mod_rewrite,如果这是所有你需要的复杂性。 如果您的规则不需要比这更复杂,请使用Redirect :
Redirect 301 / http://example.com/
如何将RewriteRule行更改为:
RewriteRule ^/(.*) http://example.com/$1 [last,redirect=301]