如何为https和子域正确编写RewriteCond

时间:2015-06-09 20:59:16

标签: regex apache .htaccess mod-rewrite url-rewriting

到目前为止,我已经用我的RewriteConditions做了这么多,但它来自于来自网络示例的黑客攻击和削减。他们似乎有时候表现得有点滑稽,比如在网址中显示目录,所以我假设我做得不对。

所需的行为:我有多个子域都指向同一个根。根据子域值,我想重定向到根目录中的子文件夹。我也想强制使用HTTPS。我有多个子域名,但为了简洁起见,我只会展示两个子域名。所有其他条件几乎相同。

这是我的.htaccess代码:`

RewriteEngine On

RewriteCond %{HTTP_HOST} purchase.mydomain.com [NC]
RewriteCond %{REQUEST_URI} !purchase/
RewriteRule (.*) https://purchase.mydomain.com/purchase/$1 [L]

RewriteCond %{HTTP_HOST} booking.mydomain.com [NC]
RewriteCond %{REQUEST_URI} !booking/
RewriteRule (.*) https://booking.mydomain.com/booking/$1 [L]

`

谢谢,

麦克

1 个答案:

答案 0 :(得分:0)

更改您的规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(purchase|booking)\.mydomain\.com$
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]

RewriteCond %{HTTP_HOST} =purchase.mydomain.com
RewriteRule ^((?!purchase/).*)$ /purchase/$1 [L]

RewriteCond %{HTTP_HOST} =booking.mydomain.com
RewriteRule ^((?!booking/).*)$ /booking/$1 [L]
目标中的

http://https://将重定向而不是重写。