使用多个URL重写规则(.htaccess)

时间:2016-11-25 17:02:49

标签: regex apache .htaccess mod-rewrite

我一直在努力让我的网址正确重定向。

我想要发生什么

如果发生以下任何情况,转发至https://www.ourwebsite.co.uk

  • 用户从(http:// OR https://)mywebsite.com / .net / .org / .mobi / .eu
  • 访问网站
  • 用户无法从HTTPS(443)
  • 进入
  • 用户不使用www。
  • 进入网站
  • 基本上,他们必须通过https://www.ourwebsite.com访问网站,或者根本不访问。

现在发生了什么

我的.htaccess文件目前包含:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?ourwebsite\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?ourwebsite\.net$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?ourwebsite\.eu$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?ourwebsite\.mobi$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?ourwebsite\.it$ [NC]
RewriteRule ^(.*)$ https://www.ourwebsite.co.uk/$1 [R=301,L]

RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://www.ourwebsite.co.uk/$1 [R=301,L]

我试过......

我尝试了很多我在网上找到的不同的例子,他们单独工作,但他们似乎并没有一起工作。我已将非443规则拆分并在底部单独添加,但这并没有改变任何东西。

1 个答案:

答案 0 :(得分:1)

您可以在单个重定向规则中执行此操作:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !=www.ourwebsite.co.uk
RewriteRule ^ https://www.ourwebsite.co.uk%{REQUEST_URI} [R=301,L,NE]

# rest of rules go below this

确保在测试此更改之前清除浏览器缓存。