【问题标题】:.htaccess redirection for www issue and https issuewww 问题和 https 问题的 .htaccess 重定向
【发布时间】:2017-03-13 16:43:13
【问题描述】:

我想重定向两种情况:

  1. www
  2. https

我目前在我的.htaccess 文件中使用以下内容:

RewriteEngine on

#RewriteCond %{HTTP_HOST} ^www\.egps\.org [NC]
#RewriteRule ^(.*)$ https://website.org/$1 [L,R=301]

RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]  

我注释掉了前 2 行,因为它们引起了问题。在 Stackoverflow 中搜索答案时,我发现了以下已接受的答案:

 RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
 RewriteCond %{HTTPS} !=on
 RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
 RewriteRule ^(.*)$ https://www.%1%{REQUEST_URI} [L,R=301,NE]

谁能解释一下我如何更改此代码以重定向到 NON www 而不是 www

谁能将这些代码行的实际意思翻译成非常简单的语言?这是我目前收集到的……

  1. 如果 URL 没有 www
  2. 如果 URL 前面没有 https
  3. 不确定这个
  4. 通过添加HTTPS://www. URL 重写 URL

【问题讨论】:

    标签: .htaccess redirect mod-rewrite


    【解决方案1】:

    我建议实现两个单独的重定向规则。这样做的好处是它只会在所有情况下导致一次重定向,并且更容易阅读/维护:

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [NE,R=301]
    
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}{REQUEST_URI} [NE,R=301]
    

    第一个条件提取主机名的部分没有前导www.

    这些规则适用于 http 服务器主机配置,同样适用于动态配置文件(.htaccess 样式文件)。


    还有一个一般提示:您应该始终喜欢将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。众所周知,这些文件容易出错,难以调试,而且它们确实会降低服务器的速度。它们仅在您无法控制主机配置的情况下(阅读:非常便宜的托管服务提供商)或如果您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)提供它们作为最后一个选项)。

    【讨论】:

    • 是的,现在很好。谢谢。
    • 我将在哪里完成这些重定向?我使用 cPanel 并确实看到了重定向链接,但不清楚如何输入您的建议。同样在我的 .htaccess 文件中,我有以下内容:
    • 抱歉...无法编辑我上面的评论。我将在哪里完成这些重定向?我使用 cPanel 并确实看到了重定向链接,但不清楚如何输入您的建议。我将 .htaccess 用于其他情况,例如显示维护页面或 404 页面。
    • 我遇到了上面代码的问题。如果我输入 example.org(没有 www 或 https://),我得到 example.org%7Brequest_uri%7D 的服务器 DNS 地址找不到。此外,如果我输入 example.org,我会收到相同的错误消息。如果有人输入 http:// 或根本没有输入任何“前言”,我们是否需要额外的重定向来处理?
    • 在使用浏览器时,如果在主机名之前输入协议方案并不重要,浏览器总是使用协议方案,只是不可视化。可疑的策略,但这就是今天的实现。您指出的“转义百分比”让我感到惊讶……这正是 NE 标志的用途:防止转义“特殊字符”。你真的确定你使用上面代码中显示的NE 标志吗?我假设你在复制规则时放弃了它......
    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2020-09-27
    • 2018-05-07
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多