【发布时间】:2017-08-29 08:14:37
【问题描述】:
我有一个简单的 htaccess 重定向规则:
RewriteRule ^directory$ / [R=301,L]
目前执行以下重定向结构:https://mywebsite.com/directory -> http://mywebsite.com-> https://mywebsite.com
(注意 HTTPS 与 HTTP)。
第二次重定向是由于设置了处理 HTTP->HTTPS 重定向的规则:
RewriteCond %{HTTP_HOST} !mywebsite.com$ [NC]
RewriteRule ^(.*)$ https://mywebsite.com/$1 [L,R=301]
RewriteCond %{REQUEST_URI} !\.(jpg|png|gif|bmp)$ [nc]
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
但我想避免这种双重步骤。如何将 HTTPS 设置为 htaccess 的默认设置?
【问题讨论】:
-
没有“htaccess 的默认值”之类的东西。向我们展示您的完整规则集。
-
@CBroe 添加了 HTTPS 重定向。你是这个意思吗?
-
@CBroe 当我在 htaccess 中指定重定向到“/”时,他应该如何知道这是 https 还是 http?
-
任何您未明确指定或覆盖的内容均基于原始请求。因此,如果您所做的只是重写到
/,那么如果原始请求是通过 HTTP 发出的,那么这将意味着重定向到http://example.com/,或者如果是 HTTPS,则重定向到https://example.com/...
标签: php apache .htaccess redirect mod-rewrite