Apache重写 – redirect到example.com而不是example.com

当试图从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]