【发布时间】:2014-10-24 16:26:45
【问题描述】:
我想将除 url 之外的所有内容重定向到 HTTPS,并将特定 url 重定向到 HTTP
我使用了以下 apache 配置:
<IfModule mod_rewrite.c>
RewriteCond %{SERVER_PORT} !^443
RewriteCond %{REQUEST_URI} !^/url
RewriteRule ^ https://mydomain.tld%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{SERVER_PORT} ^443
RewriteCond %{REQUEST_URI} ^/url
RewriteRule ^ http://mydomain.tld%{REQUEST_URI} [R=301,L]
</IfModule>
不幸的是,它只是在重定向中永远循环,我无法找出正确的 rewritecond 条件以使其正常工作
更新:
除此之外,我还有这些规则可能会影响我猜想的一些事情……:
<IfModule mod_rewrite.c>
Options -Multiviews +SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /
DirectorySlash Off
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]
</IfModule>
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=16070400; includeSubDomains"
</IfModule>
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
【问题讨论】:
-
除了这2条,你还有什么规则吗?
-
我用可能改变行为的 mod_rewrite 条件更新了帖子
标签: apache .htaccess http redirect https