1

我创建了一个 .htaccess 文件,它做了两件事:将 http 重定向到 https 和 www。到非 www。这是代码:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteBase /
RewriteCond %{HTTP_HOST} ^www.profstream.com [NC]
RewriteRule ^(.*)$ https://profstream.com/$1 [L,R=301]

这在 Chrome、Safari 和 Opera 中运行良好,但由于某种原因,当我输入 profstream.com/sandbox/login.php 时,例如在 Firefox 中,它会重定向到https://profstream.com/https://www.profstream.com /sandbox/login.php。我在这里做错了什么?

4

1 回答 1

1

我认为您缺少 [L] 和 [QSA],试试这个:

  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

L是离开,否则你将在此之后使用规则。
QSA就是添加URL的查询字符串。

第二部分应该是我认为的:

  RewriteCond %{HTTP_HOST} ^www.profstream.com [NC]
  RewriteRule (.*) https://profstream.com%{REQUEST_URI} [QSA,L]

不知道RewriteBase /,有必要吗?

如果你希望两者都发生,也许你应该颠倒顺序

  RewriteCond %{HTTP_HOST} ^www.profstream.com [NC]
  RewriteRule (.*) https://profstream.com%{REQUEST_URI} [QSA,L]

  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
于 2013-02-05T12:42:10.490 回答