使用.htaccess重定向所有网址,但一个动态网址除外

时间:2014-12-08 10:27:14

标签: .htaccess redirect

我想将所有网址从http重定向到https,这对我来说很合适。

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

现在我想在此规则中添加一个例外,即每当用户请求以下动态网址时(最后一个字符串是动态生成的),它都不应该强制https重定向。

sub.domian.dev/api/v/1/download/zip/token/8397298347ksjdnkjasdn0394834 

我尝试过这条不起作用的规则。

#url to exclude
RewriteCond %{REQUEST_URI} !^/api/v/1$

有人可以给我指示如何使用它吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用此代码:

RewriteEngine On

# except /api/v/1/ requests redirect everything else to https
RewriteCond %{THE_REQUEST} !\s/+api/v/1/ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^ index.php [L]

答案 1 :(得分:1)

您可以使用:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/api/v/1/
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]