【问题标题】:.htaccess redirect any domain to a domain apart from a specific domain, rule.htaccess 将任何域重定向到除特定域之外的域,规则
【发布时间】:2021-07-16 11:11:42
【问题描述】:

我有两个域指向一个 webroot,需要将任何流量强制到其中一个域。

但是,这意味着到其他域的所有流量都无法到达。

这是我目前的以下规则

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

我想允许通过的第二个域是 edit.example.co.uk

所以,我试过了:

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

但没有快乐,然后我尝试了该主题的变体,但没有运气。

我想也许从概念上讲,我正在为这些处理的顺序而苦苦挣扎?

我们将不胜感激地收到任何见解!

【问题讨论】:

  • 所以https://edit.example.co.uk不应该被重定向?
  • @anubhava 是的,没错。

标签: apache .htaccess redirect mod-rewrite


【解决方案1】:

您应该使用 2 种不同的重定向规则:

RewriteEngine On

# add https and www to example.co.uk in same rule
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.co\.uk)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]

# add https to edit.example.co.uk
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^edit\. [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

确保在测试这些规则之前完全清除浏览器缓存。

【讨论】:

    猜你喜欢
    • 2010-12-27
    • 2021-11-03
    • 2015-02-07
    • 2016-11-10
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2011-06-29
    相关资源
    最近更新 更多