3

我希望有人可以帮助我使用 mod_rewrite 规则,除了添加斜杠之外。

这是规则

<IfModule rewrite_module>

Options Indexes FollowSymLinks +IncludesNOEXEC 
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mydomain\.org$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.org/$1 [L,R=301]

</IfModule>

目的是以 www.mydomain.org 的形式重写 URL mydomain.org

这行得通。但随后 www.mydomain.org// 显示在浏览器地址栏中。检查重写日志显示 // 是由规则显式创建的

问题是:

  1. 两个斜线是否(或可能)重要?
  2. 如果 (1) 的答案是肯定的,我可以重做规则以省略尾部斜杠吗?
4

2 回答 2

1

大多数服务器会忽略双斜杠并将其视为单斜杠。参见例如这个问题(双斜杠)https://stackoverflow.com//questions/13027041

要修复您的RewriteRule,我相信您只需将其更改为

RewriteRule ^/?(.*)$ http://www.mydomain.org/$1 [L,R=301]

/?部分使其成为可选(root 访问),如果找到它,它将被剥离,因为它不是捕获(.*)部分的一部分。

于 2012-10-23T09:39:32.730 回答
1
  1. 不,两个斜杠通常无关紧要,无论如何它不会混淆软件。这只是意味着您必须再传输一个字节(这在某些情况下可能很重要)。
  2. 只需将您的重写规则更改为RewriteRule ^/?(.*)$ http://www.mydomain.org/$1 [L,R=301]. 这/?就是诀窍。
于 2012-10-23T09:40:39.057 回答