【问题标题】:trying to cover multiple redirect conditions in htaccess file试图在 htaccess 文件中覆盖多个重定向条件
【发布时间】:2018-07-29 18:11:38
【问题描述】:

我正在尝试编写一个涵盖所有我需要的基础的 htaccess 文件,但我有很多非常具体的操作要涵盖。

我有三个域:.com .co.uk 和 .london,我希望所有流量都以 https://www.somepage.com 结束,但到 .London 的任何流量都必须重定向到特定的 mysite/London.php 页面

所以我的所有条件都是:

force www prefix
force https
remove extensions
force .co.uk to .com domain
force any .london traffic to specific /london page

到目前为止我有:

# Force WWW prefix
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

# Force SSL
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

# Remove .php extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]

所以我需要添加最后两个条件

force .co.uk to .com domain
force any .london traffic to specific /london page

但我很难让所有东西协同工作。

编辑:

仍在努力让所有条件协同工作,因此为了清楚起见,在此处添加一些示例。

www.example.com -> https://www.example.com

http://example.com -> https://www.example.com

http://www.example.com/mypage.php -> https://www.example.com/mypage

www.example.co.uk -> https://www.example.com

http://www.example.co.uk -> https://www.example.com

http://www.example.co.uk/mypage.php -> https://www.example.com/mypage

www.example.london -> https://www.example.com/london

http://example.london -> https://www.example.com/london

http://example.london/anything -> https://www.example.com/london

所以所有 URL 必须以添加“www”结尾,仅限 .com 域,强制 https,删除 php 扩展名。

我已经尝试了数百个代码 sn-ps 和组合,但无法让所有条件同时工作。

【问题讨论】:

    标签: .htaccess url-redirection http-redirect


    【解决方案1】:

    你可以使用这些规则:

    # force .co.uk to .com domain
    RewriteCond %{HTTP_HOST} ^(www\.)?\.example\.co\.uk$
    RewriteRule ^ https://www.example.com%{REQUEST_URI} [NE,L,R=301]
    
    # force any .london traffic to specific /london page
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.london$
    # this line is important to avoid Redirect loop error
    RewriteCond %{REQUEST_URI} !/london/page
    RewriteRule ^ /london/page%{REQUEST_URI} [L,R]
    
    # Force WWW prefix
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
    
    # Force SSL
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
    
    # Remove .php extension
    RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
    RewriteRule (.*)\.php$ /$1/ [L,R=301]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多