.htaccess 301 将所有 https 重定向到 http(一页除外)

2024-06-25

这是我当前在 .htaccess 文件中的代码:

Options +FollowSymLinks 
RewriteEngine on
RewriteBase / 
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我了解杰克关于重写的事情……关于这个主题的所有其他帖子确实不符合我的标准,而且我对这种语言了解不够,无法尝试破译它。

基本上我需要的是这样的:

  1. 将“example.com”的所有实例重定向到“www.example.com”
  2. 重定向“的所有实例https//www.example.com“到”http://www.example.com”除 1 页外!!! (如果重要的话,该页面的文件名是 payment.php)

我上面的代码可以工作,但是对于我需要为 https 的第 1 个页面,它将 url 重写为 http。该页面必须是 https。

谢谢, 克里斯


Apache/2.2.6 (Win32) mod_ssl/2.2.8 OpenSSL/0.9.8g PHP/5.2.6

我已经在本地进行了测试,所有用例似乎都工作正常。如果您还有其他问题,请随时提问。

# Rewrite Rules for example.com
RewriteEngine On
RewriteBase /

# Redirect from example.com to www.example.com
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL on for payments
RewriteCond %{HTTPS} off
RewriteCond %{SCRIPT_FILENAME} \/payments\.php [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but payments
RewriteCond %{HTTPS} on
RewriteCond %{SCRIPT_FILENAME} !\/payments\.php [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

重要的!当用户从任意位置导航时https页面与www to any https page without www,他被要求接受您的非 www 域的安全证书。

例如(YES = 请求接受证书,NO - 相反):

1) https://www.asdf.com/payments.php - YES (www.asdf.com)
2) http://www.asdf.com/phpinfo.php - NO
3) https://asdf.com/phpinfo.php - YES (asdf.com)
4) https://www.asdf.com/phpinfo.php - NO

我尝试对 .htaccess 中的规则重新排序,但没有成功。如果有人找到更好的解决方案,我们将不胜感激。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.htaccess 301 将所有 https 重定向到 http(一页除外) 的相关文章

随机推荐