Mod_rewrite始终重定向到301

时间:2016-09-05 09:05:28

标签: apache .htaccess mod-rewrite url-redirection

我有代码:

# No https a https
RewriteCond %{HTTPS} !=on [NC]
RewriteRule !(cecabank)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

当http未开启且URL不是cecabank时,我想重定向到https。

这有效:http://sample.es/sample将301重定向到https://sample.es/sample

这不起作用:http://sample.es/cecabank将301重定向到http://sample.es/index.php

我不希望使用301重定向到index.php。如果我删除HTTPS重定向工作正常但它不会重定向。

1 个答案:

答案 0 :(得分:2)

尝试以下

RewriteEngine On

# No https a https
RewriteCond %{HTTPS} !=on [NC]
RewriteCond %{REQUEST_URI} !^/cecabank [NC]
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L,END]

END标志(自Apache 2.4+以来可用)将负责强制重定向。