当尝试在 apache 中重定向 URL 时:
www.example.com
到
example.com
它会重定向到
example.com//
这是一个单页网络服务器,固定 IP 可直接进入页面。
直接编辑 httpd.conf
知道为什么会发生这种情况吗?
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com [nocase]
RewriteRule ^(.*) http://example.com/$1 [last,redirect=301]
答案1
这是在.htaccess
文件还是<Directory />
块中?我猜不是。
在这两个区域内,URI 路径与完整的文件系统路径匹配,并且与目录匹配的部分(包括斜杠)被删除。
在这些区域之外,URI 路径以斜线开头。因此,您的重定向会添加一个额外的斜线。
您可以将重写规则更改为:
RewriteRule ^/(.*) http://example.com/$1 [last,redirect=301]
或者
RewriteRule ^(.*) http://example.com$1 [last,redirect=301]
答案2
该规则是在哪里配置的?
似乎它可能在服务器或虚拟主机配置中,在匹配字符串中会有一个前导斜杠,该斜杠被捕获并替换到重定向字符串中。
尝试这个:
RewriteRule ^/(.*) http://example.com/$1 [last,redirect=301]
如果这就是您需要的全部复杂性,您似乎不需要为此使用 mod_rewrite。如果您的规则不需要比这更复杂,请改用Redirect
:
Redirect 301 / http://example.com/
答案3
那么将该行改为RewriteRule
:
RewriteRule ^/(.*) http://example.com/$1 [last,redirect=301]