【问题标题】:.htaccess rewrite for https and hidden subfolder.htaccess 重写 https 和隐藏子文件夹
【发布时间】:2017-12-20 17:40:16
【问题描述】:

我需要将http://www.example.comhttp://example.com 重写为 https://www.example.com。 另一个复杂性是这些 URL 不是指向索引文件,而是指向 / 文件夹。即https://www.example.com 确实指向/var/www/html/folder,而不在URL 栏中显示https://www.example.com/folder

我之前已经设法完成了第二部分

RewriteCond %{HTTP_HOST} www.example.com [NC,OR]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ folder/$1 [L]

我知道第一部分可以通过以下方式实现:

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

但不知何故,因为我不熟悉 htaccess,所以我无法让他们两个一起工作。提前致谢!

【问题讨论】:

    标签: apache .htaccess url-rewriting


    【解决方案1】:

    您可以有一个规则来添加wwwhttp -> https 重定向,然后为文件夹转发设置重写规则:

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

    【讨论】:

    • 我收到此错误:Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。
    • 在新浏览器或命令行中尝试我更新的规则curl
    • 同样的结果。我尝试了 firefox、chrome、safari 并清除了所有历史记录、cookie 等。
    • 好的,在 Chrome 开发工具中使用 缓存禁用 进行测试,然后在“网络”选项卡中检查您获得的 301/302 重定向 URL 是什么。
    • 好的,我在 Firefox 的工具上看到了更多信息。上面写着请求 URL:example.com,远程地址:xxx.xxx.xxx.xxx:443 状态码:301 然后一连串的一样
    猜你喜欢
    • 2013-04-02
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多