【问题标题】:.htaccess HTTPS Redirect while keeping the URL shortform.htaccess HTTPS 重定向,同时保留 URL 短格式
【发布时间】:2011-01-26 19:53:13
【问题描述】:

好的,我的 .htaccess 中有这个重写规则:

RewriteRule ^settings https://%{HTTP_HOST}/user_settings.php

这会将“http://domain.com/settings”重定向到“https://domain.com/user_settings.php”。

如何使它将“http://domain.com/settings”重定向到“https://domain.com/settings”?意思是,如何将 URL 从 HTTP 重定向到 HTTPS,同时仍将重定向短 url 保留在 .htcaccess 中?

谢谢!

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    编辑:澄清问题后更新答案。

    你可以这样做:

    RewriteCond %{HTTPS} !=on
    RewriteRule ^settings(/?)$ https://%{SERVER_NAME}%{REQUEST_URI} [R,NC]
    RewriteCond %{HTTPS} =on
    RewriteRule ^settings(/?)$ /user_settings.php [L,NC]
    

    第一个 RewriteCond 将检查 HTTPS 是否关闭,随后的 RewriteRule 只会在关闭时发生。

    第一个RewriteRule 将匹配以下任一:

    • http://domain.com/settings
    • http://domain.com/settings/

    (/?) 允许尾部正斜杠是可选的。 [R,NC] 中的 R 强制这是一个重定向,NC 表示它不区分大小写。

    第二个RewriteCond 将再次检查 HTTPS,但这次要确保它已打开。

    如果 HTTPS 已打开,并且您位于您的目录中(也就是说,第一次重写成功),那么它将重写到 user_settings.php[L,NC] 中的 L 表示如果匹配此规则,则它是它应该遵循的最后一个 RewriteRule

    【讨论】:

    • 但是它怎么知道使用 user_settings.php 作为重定向呢?这只会给出 404 错误。
    • 您是否希望http://domain.com/settings 重定向到https://domain.com/user_settings.php 但在URL 中显示https://domain.com/settings
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2011-09-25
    • 2015-12-23
    • 1970-01-01
    • 2016-06-05
    • 2015-07-27
    • 2021-03-30
    相关资源
    最近更新 更多