【问题标题】:.htaccess SSL redirect with url rewrite.htaccess SSL 重定向与 url 重写
【发布时间】:2016-12-20 09:45:09
【问题描述】:

我需要你的帮助。 假设这是我的网站:example.com

我想将 http 重定向到 https。 此外,我还想重写 url。 如果我通过以下方式访问该网站:

https://example.com/new 一切正常。

如果我通过以下方式访问该网站: http://www.example.com/new 它重定向到 https 但不会重写 url。结果是这样的:

`https://example.com/old`


RewriteEngine on

RewriteRule  ^new/(.*)$    old/$1    [L,QSA] 

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

我试图将规则按另一个顺序排列,但这根本不起作用。

我希望你能帮助我。非常感谢:)

【问题讨论】:

  • 切换规则的顺序。

标签: regex .htaccess mod-rewrite ssl


【解决方案1】:

如果你只是想删除www,你只需要这个。

RewriteEngine on

RewriteCond %{HTTPS} ^off [OR]
RewriteCond %{HTTP_HOST} !^example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC]

RewriteRule  ^new/(.*)$    old/$1    [L,QSA]

【讨论】:

  • 我已经使用了你的代码,它现在工作正常。非常感谢! :)
【解决方案2】:

规则

RewriteRule  ^new/(.*)$    old/$1    [L,QSA] 

配置为L(最后一个),因此一旦匹配就不再处理其他规则。

您需要切换规则的顺序。在上述规则之前添加 HTTPS 重定向。

【讨论】:

  • 感谢您的回答!我尝试将 RewriteRule ^new/(.*)$ old/$1 [L,QSA] 置于另一条规则下,但它不起作用..
猜你喜欢
  • 2011-01-27
  • 2012-07-30
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 2015-03-04
  • 2014-11-26
  • 1970-01-01
相关资源
最近更新 更多