2017-02-11 5 views
0

У меня есть файл .htaccess см ниже.htaccess перенаправление, кроме одного конкретного запроса

Options +FollowSymLinks +ExecCGI 

<IfModule mod_rewrite.c> 

#Every www request to non-www 
RewriteEngine On  
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] 
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L] 

#every http request in amdinistrator folder redirect to https 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/administrator 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] 

#every https request except ftp and one specific request redirect to http 
RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} !^/ftp 
RewriteCond %{REQUEST_URI} !=/preview/index.php?request_type=preview_engime 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301] 

#redirect which request contains PUBLIC_AJAX_ENGIME 
RewriteRule ^(.*)PUBLIC_AJAX_ENGIME(.*)$ index.php?request_type=ajax_engime [L] 

#files and directories 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule . index.php [L] 

</IfModule> 

Я не хочу перенаправления в этом случае:

https://somewebsite.domain/preview/index.php?request_type=preview_engime

но система перенаправляет здесь

http://somewebsite.domain/index.php?request_type=preview_engime

a Я не понимаю, почему.

Спасибо! FF

ответ

0

Это потому, что ваш url содержит запрос. Вы не можете сопоставлять QueryString с переменной REQUEST_URI. Вам необходимо сопоставить переменную THE_REQUEST. Заменить RewriteCond с этим:

RewriteCond %{THE_REQUEST} !/index\.php\?request_type=preview_engime [NC] 
+0

Это почти хорошо ... Теперь запрос был перенаправлен здесь: HTTP: // somewebsite.domain/просмотр/index.php request_type = preview_engime Но мне нужно HTTPS в этом случае. – Fferlen

Смежные вопросы