3

我在这里看到了一些这样的问题,但似乎没有答案。我似乎无法弄清楚这一点。这是我的代码:

# enable basic rewriting

RewriteEngine on

# enable symbolic links
Options +FollowSymLinks

# Primary Domain - Force the use of "https"
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

# Primary Domain - Force the use of "www"
RewriteCond %{http_host} ^example.org [nc]
RewriteRule ^(.*)$ https://www.example.org/$1 [r=301,nc]

# Primary Domain - .com to .org
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.org/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ https://www.example.org/$1 [R=301,L]

# Primary Domain - .net to .org
RewriteCond %{HTTP_HOST} ^example.net$ [NC]
RewriteRule ^(.*)$ https://www.example.org/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.example.net$ [NC]
RewriteRule ^(.*)$ https://www.example.org/$1 [R=301,L]

所以每当我去www.example.orghttp://www.example.org它不会重定向。这让我很沮丧。如果我去 example.org 或任何其他重定向,它仍然有效。我设置错了吗?

另外,在它说“HTTP_HOST”的地方,我要保持原样吗?就像我用我的 http 主机替换它一样?

4

1 回答 1

1

Amie,如果您想强制www并且https两者都可以检查是否缺少 www。或检查是否https不是然后 On重定向。所以无论哪种方式,它都会重定向。例子。

# Primary Domain - Force the use of "https" and www
RewriteCond %{HTTP_HOST} !^www\. [OR]
RewriteCond %{HTTPS} !^on$
RewriteRule ^(.*)$ https://www.mydomain.org/$1 [R=301,L]

将 mydomain.org 替换为您的域。

然后你可以有一个像这样的htaccess文件。我采用了最后两条规则并将它们组合起来,这样你就有了一个更小的 htaccess 文件。

# enable basic rewriting
RewriteEngine on

# enable symbolic links
Options +FollowSymLinks

# Primary Domain - Force the use of "https" and www
RewriteCond %{HTTP_HOST} !^www\. [OR] 
RewriteCond %{HTTPS} !^on$
RewriteRule ^(.*)$ https://www.mydomain.org/$1 [R=301,L]

# Primary Domain - .com to .org Or .net to .org
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.(net|com)$ [NC]
RewriteRule ^(.*)$ https://www.mydomain.org/$1 [R=301,L]

另外,在它说“HTTP_HOST”的地方,我要保持原样吗?就像我用我的 http 主机替换它一样?

%{HTTP_HOST}是一个变量,包含从浏览器使用 Http 标头发送的主机。因此,如果有人请求http://mydomain.org/somepage.php该变量%{HTTP_HOST}将包含mydomain.org. 你不改变它。您可以使用它来匹配事物或设置规则中的条件。希望这能回答你的问题。

于 2014-02-20T05:41:28.197 回答