代码之家  ›  专栏  ›  技术社区  ›  R2D2

试图覆盖htaccess文件中的多个重定向条件

  •  1
  • R2D2  · 技术社区  · 7 年前

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

    我有三个域:。通用域名格式。co.uk和。伦敦和我希望所有的交通都在 https://www.somepage.com 除非有交通堵塞。伦敦,必须重定向到特定的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。伦敦-> 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扩展已删除。

    我尝试了数百个代码片段和组合,但无法同时满足所有条件。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Amit Verma    7 年前

    您可以使用以下规则:

    # 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]