【问题标题】:mod_rewrite to force SSL for a subfoldermod_rewrite 为子文件夹强制 SSL
【发布时间】:2013-05-27 05:19:57
【问题描述】:

我尝试从特殊文件夹重定向到特殊主机。

当有人输入http://mydomain.com/administrator时,他应该被重定向到https://a-otherdomain.com/mydomain.com/administrator

我在 DOCUMENT_ROOT 中的 .htaccess 文件中拥有这个 .. 但它需要工作:(

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} (^|\.)mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/administrator(/*) [NC]
RewriteRule ^/administrator/(.*)$ https://a-otherdomain.com/mydomain.com/administrator/$1     [QSA,R=301,L]

有什么想法吗?

更新:

现在我使用它,它适用于 vhost 的 apache 配置文件:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} (^|\.)mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/administrator/ [NC]
RewriteRule ^/(.*)$ https://a-otherdomain.com/mydomain.com/$1 [R=301,L]

谢谢, 托马斯

【问题讨论】:

    标签: mod-rewrite url-rewriting https rewrite


    【解决方案1】:

    RewriteRule 与 URI 中的前导斜杠不匹配。

    试试这个代码:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} (^|\.)mydomain\.com$ [NC]
    RewriteRule ^administrator(/.*|)$ https://a-otherdomain.com/mydomain.com/$0 [R=302,L,NC]
    

    一旦您确认它工作正常,请将R=302 替换为R=301。在测试你的 mod_rewrite 规则时避免使用R=301(永久重定向)。

    【讨论】:

    • 不知道为什么,但规则仅适用于 apache 配置而不适用于 htaccess。现在它可以工作了 - 但你的 RewriteCond 不正确,因为它重定向了所有页面 - 谢谢
    • because it redirects all pages 不看RewriteRule ^administrator(/.*|)$ 行,它只会重定向所有以文本/administrator/ 开头的URI
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 2011-05-22
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多