mod_rewrite强制子文件夹的SSL

时间:2013-05-31 11:36:39

标签: mod-rewrite url-rewriting https rewrite

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

当有人输入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]

谢谢, 托马斯

1 个答案:

答案 0 :(得分:0)

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(永久重定向)。