【问题标题】:With htaccess .. all url must be redirect to https with www使用 htaccess .. 所有 url 必须使用 www 重定向到 https
【发布时间】:2014-08-14 17:58:07
【问题描述】:
domain.com
www.domain.com/xyz
http://domain.com/xyz
http://www.domain.com/xyz
https://domain.com/xyz

必须使用 .htaccess (apache 2.4) 重定向到下面

https://www.domain.com/xyz

【问题讨论】:

    标签: linux apache .htaccess mod-rewrite ubuntu


    【解决方案1】:

    将此规则放入您的 DOCUMENT_ROOT/.htaccess 文件中:

    RewriteEngine On
    
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=302,L,NE]
    

    编辑:使用curl 命令行进行测试:

    $> curl -I -k -A "Chrome" -L 'https://domain.com/'
    HTTP/1.1 302 Found
    Date: Wed, 25 Jun 2014 06:50:57 GMT
    Server: Apache/2.4.7 (Ubuntu)
    Location: https://www.domain.com/
    Content-Type: text/html; charset=iso-8859-1
    
    HTTP/1.1 200 OK
    Date: Wed, 25 Jun 2014 06:51:00 GMT
    Server: Apache/2.4.7 (Ubuntu)
    Last-Modified: Thu, 19 Jun 2014 13:16:20 GMT
    ETag: "7ac-4fc302ecafc5e"
    Accept-Ranges: bytes
    Content-Length: 1964
    Vary: Accept-Encoding
    Content-Type: text/html
    

    【讨论】:

    • "https://domain.com/" 运行此 URL 它不会重定向到 "https://www.domain.com/"(我在 url 中放了空格以向您展示确切的示例url)...你能更新一下吗?
    • 有了这条规则,https: //domain.com/ 将被重定向到https: //www.domain.com/,因为两个条件之间存在[OR]。确保您在新浏览器中进行测试,这是您的第一条规则。
    • 感谢您的回复先生。我确实使用新浏览器进行了测试,并清除了缓存和另一个人的系统。如果 url "http" 和非 www 比它正常工作,因为我们有 HTTP_HOST 但 url 带有 "https" 和非 www 比它不工作。是否要求“继续进行”确认表的 ssl 确认。只是不使用“https”。 RewriteCond %{HTTPS_HOST} !^www\ 是否还有其他条件。 ?
    • 第二个条件是RewriteCond %{HTTP_HOST} !^www\.,它将触发具有非 www 主机的 URL。
    • 除了chrome,我还使用命令行curl 对其进行了测试,并且我在上面的答案中附加了该输出。 (见编辑)
    【解决方案2】:

    尝试将其放入您的.htaccess 文件中的DOCUMENT_ROOT

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^/?(?:xyz/?)?$ https://www.domain.com/xyz [R=302,L]
    

    如果可行,您可以将R=302 更改为R=301

    让我知道这是否适合您。 :)

    【讨论】:

    • 嘿,Kishan,跟进这个问题,有没有一个答案为你解决了问题,还是问题仍然存在?
    • "https://domain.com/" 运行此 URL 它不会重定向到 "https://www.domain.com/"(我在 url 中放了空格以向您展示确切的示例的网址)...你能更新一下吗?我到底想要什么先生..
    • @KishanPatel 我做了一个小调整:在$ 之前添加了一个问号。让我知道这是否可以解决。 :)
    • 先生,如果 xyz 是动态的,它可以工作吗?如果 www 不包括比它会添加 www,即使它是 http 或 https ?
    • 您的要求变化太大...无法继续在 cmets 中回答。如果你问另一个问题,我会很乐意看到它——或者其他人会。为了成为有效的回答者,我们需要反馈——到目前为止,@anubhava 和我自己的回答是否有帮助,还是我们在黑暗中拍摄?
    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 2017-01-12
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多