Apache rewrite - 重定向到 example.com// 而不是 example.com

Apache rewrite - 重定向到 example.com// 而不是 example.com

当尝试在 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]

相关内容