.htaccess通过多次重写重定向



我正在尝试将一些选定页面重定向到HTTPS。我发现了很多例子,但它们似乎不适用于我当前htaccess文件中的内容。我当前的htaccess有

RewriteEngine On
Options +FollowSymLinks
# Redirect all other domains to the primary
RewriteCond %{HTTP_HOST} ^(www.?|)(domain1.com|domain2.com|domain3.com|.co)$
RewriteRule ^(.*)$ http://www.prefferreddomain.com/$1 [R=301,L]
# Error Documents
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
#Cache Settings, etc. after this

我目前在我的htaccess文件中为SEO做这件事,因为我们拥有几个域名(20+)。无论如何,我想要3个页面重定向到HTTPS,但我尝试过的所有示例都没有按预期工作。我不确定我应该把它们放在当前htaccess文件中的重定向之前还是之后。

应该重定向到https的页面是logon.php&chat.php。所以我尝试了

RewriteEngine On
Options +FollowSymLinks
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (logon.php)
RewriteRule (.*) https://www.preferreddomain.com%{REQUEST_URI} 
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (chats.php)
RewriteRule (.*) https://www.preferreddomain.com%{REQUEST_URI}
# Redirect all other domains to the primary
RewriteCond %{HTTP_HOST} ^(www.?|)(domain1.com|domain2.com|domain3.com|.co)$
RewriteRule ^(.*)$ http://www.prefferreddomain.com/$1 [R=301,L]
# Error Documents
ErrorDocument 401 /errors/401.php
ErrorDocument 403 /errors/403.php
ErrorDocument 404 /errors/404.php
#Cache Settings, etc. after this

但这并没有奏效。有人有什么线索吗。

[R=301,L]添加到每个https://规则的末尾。如果没有L,规则会将URI标记为重定向,但URI会在重写引擎的其余部分中继续,并且还会与上一条规则相匹配。

事实证明,它不起作用的原因是我们的主机网络解决方案使用SSL代理,因此任何检测到协议的服务器端都不会起作用,通常会导致循环。

最新更新