gpt4 book ai didi

apache - 如何为多个域情况编写 .htaccess 规则

转载 作者:太空宇宙 更新时间:2023-11-03 13:24:00 25 4
gpt4 key购买 nike

我有两种主要类型的域指向我的网络服务器。我想将主要流量 (example.com) 定向到 https,但其余流量(即 profile1.net、profile2.net 等)我想保留为 http。 出于这个原因,我不能使用包罗万象的 SSL 重定向类型的规则。此外,我有更多规则可以重定向配置文件名称和隐藏扩展名等,所以我不能使用 L RewriteRule 之后的指令

我还想将所有主要流量引导至子域 www。

我好像不能把两 block 拼起来,系统好像忽略了其中一个条件。请查看:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^/?$ "https://www.example.com/$1" [R=301]

结果:测试用例 3 和 4 有效。测试用例 1 和 2 显示为 http://

如果我注释掉 www.在条件行中,example.com 完美运行:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
#RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^/?$ "https://www.example.com/$1" [R=301]

结果:测试用例 1、3 和 4 有效。测试用例 2 显示为 http://

测试用例:

  1. example.com -> https://www.example.com
  2. www.example.com -> https://www.example.com
  3. > https://example.com -> https://www.example.com
  4. > https://www.example.com -> https://www.example.com

*这些测试用例不适用于本例,但在整体中适用*

  1. [以上任何一项]/signup.php -> https://www.example.com/signup.php
  2. profile.net -> profile.net
  3. www.profile.net -> www.profile.net
  4. > https://profile.net -> throw 浏览器中的 SSL 异常
  5. > https://www.profile.net -> 抛出 SSL浏览器异常

最佳答案

这是适用于所有 4 种情况的单个 301 重定向规则:

RewriteEngine on

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

关于apache - 如何为多个域情况编写 .htaccess 规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39280592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com