如何使用漂亮的 url 将 HTTP 重定向到 HTTPS?

Posted

技术标签:

【中文标题】如何使用漂亮的 url 将 HTTP 重定向到 HTTPS?【英文标题】:How to redirect HTTP to HTTPS with pretty urls? 【发布时间】:2016-04-19 04:08:50 【问题描述】:

我想将进入我的 Webfaction 托管 Wordpress 站点的用户从 HTTP 重定向到 HTTPS,同时支持漂亮的 URL。如何做到这一点?我已经尝试了几个解决方案,但它不起作用。 (以下示例)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#This is first attempt
#RewriteCond %HTTPS =off
#RewriteRule ^(.*)$ https://%HTTP_HOST%REQUEST_URI [NC,R=301,L] #Tested here some flags, no success

#This is second attempt
#RewriteCond %HTTPS =off
#RewriteRule ^(.*)$ - [env=ps:https]

#This is third attempt
#RewriteCond %SERVER_PORT ^([0-9]+s)$
#RewriteRule ^(.*)$ - [env=ps:https]

#This is fourth try
#RewriteCond %HTTPS =off
#SSLOptions +StrictRequire
#SSLRequireSSL
#SSLRequire %HTTP_HOST eq "example.com"

#This is fifth attempt
RewriteCond %HTTPS !=on
RewriteRule .* https://%SERVER_NAME%REQUEST_URI [R=301,L]

# This is Wordpress pretty URLS (Has to stay!)
RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]

</IfModule>

我得到的只是重定向循环(301 或 302)或带有“在这里找到”的页面,其中“这里”是我的域的锚点:/ 忘了说,我只能编辑 .htaccess。

【问题讨论】:

你为什么不使用插件呢?那里足够了。例如ForceSSL @0x4Dark 该插件是我想省略的不必要的代码。 【参考方案1】:

我找到了这个答案https://serverfault.com/a/678402/102060,这对我有帮助。 事实证明,Webfaction 使用了某种负载均衡器,它不会通过发送特定的标头来显示自己。 我试过这个百叶窗,效果很好!

### Force HTTPS
RewriteCond %HTTP:X-Forwarded-Proto !https
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI [L,R=301]

【讨论】:

以上是关于如何使用漂亮的 url 将 HTTP 重定向到 HTTPS?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用 .htaccess 将所有 url 重定向到 1 个 url

如何在支持 bean 中处理漂亮的“查询参数”?

如何使用 htaccess 将带有参数的旧 url 重定向到新的 seo url

如何将 `http://` 和 `www.` URL 永久重定向到 `https://`?

如何在 C# WebBrowser 控件中获取重定向的 url

如何将带有斜杠的 URL 重定向到没有斜杠的相应 URL?