【问题标题】:.htaccess https to http redirect conflict with existing rule.htaccess https 到 http 重定向与现有规则冲突
【发布时间】:2017-02-20 19:15:46
【问题描述】:

目前我们在.htaccess中有这个规则

RewriteEngine on <br>
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/$1
RewriteRule ^(/)?$ site/index [L]

如果页面未找到,我们将重定向到子文件夹调用站点的任何访问。发生这种情况时,网址不会将站点显示为子文件夹。
例如,如果我们有 /rootFolder/site/temp.html 这将在 url 中显示为

http://www.domain.com/temp.html

这工作正常,但现在我们需要在用户访问站点时添加 https 重定向。

这是我想出的新规则

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https://%{HTTP_HOST}/site/$1
RewriteRule ^(/)?$ https://%{HTTP_HOST}/site/index [L]

但是这个问题现在是 url 将显示站点子文件夹 https://www.domain.com/site/temp.html

如果用户这样做,我该如何实现

http://www.domain.com/temp.html 它会在站点子文件夹中找到 temp.html 并重定向到 https 并且 url 只会显示

https://www.domain.com/temp.html

谢谢

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite httpd.conf


    【解决方案1】:

    如果你分两次执行,总是将请求的内容重定向到 https,然后运行你的重写规则,如下所示:

    RewriteCond %{HTTPS} off
    #301 flag redirects instead of rewriting
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    #leaving your original rules as is
    RewriteCond %{REQUEST_URI} !^/site/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /site/$1
    RewriteRule ^(/)?$ site/index [L]
    

    【讨论】:

    • 这是我尝试的第一件事,但它不起作用。奇怪的是它在我的 mac 上可以工作,但在 AWS 上不能与 apache 一起工作。这是规则 RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{REQUEST_URI} !^/site/ RewriteCond % {REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /site/$1 RewriteRule ^(/)?$ site/index [L]
    • 根据 chrome 上的网络跟踪,它触发 301 https 重定向,但第二个块没有被调用。所以 https 没有响应(响应时间太长)
    • 成功了。我再次检查,它工作。由于AWS阻塞443,它没有早点工作的原因。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2011-12-04
    • 1970-01-01
    • 2020-04-29
    • 2015-12-26
    相关资源
    最近更新 更多