【问题标题】:redirect non www to www with URI with mod_rewrite.c使用 mod_rewrite.c 将非 www 重定向到带有 URI 的 www
【发布时间】:2018-07-10 19:15:42
【问题描述】:

任何人都可以帮助我解决上述情况:

1、http转https

所有访问权限必须更改为https://~

1 个主机中的 2、4 个子域(www 和 ex1~3)

www.example.com、ex1.example.com、ex2.example.com、ex3.example.com

3,没有子域使用 URI 重定向到 www

https://example.com/dir/ 必须改为https://www.example.com/dir/

我在 /etc/httpd/conf.d/ 中有这个 rewrite.conf

现在我有 https://example.com/dir/https://www.example.com,但没有解决这个问题。

希望有人能帮我解决这个问题。

  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

  RewriteCond %{HTTP_HOST} !^(www|ex1|ex2|ex3)\.example\.com [NC]
  RewriteCond %{HTTP_HOST} ^example\.com$ 
  RewriteRule ^/(.*)$ https://www.example.com/$1 [R=301,L]

服务器版本:Apache/2.2.34 (Unix), Amazon Linux AMI 版本 2018.03

【问题讨论】:

    标签: apache mod-rewrite url-redirection


    【解决方案1】:

    第一条规则正在处理为 [Last] 并且没有达到将 htts://example.com/dir/ 重定向到 www 的第二条规则。版本。尝试切换它们:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^(www|ex1|ex2|ex3)\.example\.com [NC]
    RewriteCond %{HTTP_HOST} ^example\.com$ 
    RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
    
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    

    另外,你不能在 apache 2 中使用前面的斜杠。你应该像我上面所做的那样删除它,或者如果曾经使用过 apache 1,则可以选择匹配它:

    RewriteRule ^/?(.*)$ https://www.example.com/$1 [R,L]
    

    另外,我建议您制作所有重定向标志 [R=302],直到您确认它们正在努力防止重定向时出现缓存问题。

    【讨论】:

      猜你喜欢
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多