2013-09-27 5 views
1

Я использую структуру Yii. Я хочу перенаправить все страницы на сайте с HTTP на HTTPS, кроме этого domain.com/clip/create.htaccess перенаправляет на https все страницы, кроме одного

После код перенаправляет все страницы с HTTPS:

RewriteEngine on 
RewriteCond %{HTTPS} !^on$ 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Я изменил этот код, чтобы добавить исключение для одной страницы, и это не работает должным образом. Она работает на всех страницах сайта, но по адресу domain.com/clip/create перенаправляет к https://domain.com/index.php Мой код ниже:

RewriteEngine on 

RewriteCond %{HTTPS} !^on$ 
RewriteCond %{REQUEST_URI} !^/clip/create 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L] 

RewriteCond %{HTTPS} ^on$ 
RewriteCond %{REQUEST_URI} ^/clip/create 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R,L]  

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 

Любая помощь очень ценится.

Благодаря

ответ

1

Вы хотите удалить "HTTPS" часть второго перенаправления, (и вы, вероятно, не нужны !-f и !-d проверки либо):

RewriteCond %{HTTPS} ^on$ 
RewriteCond %{REQUEST_URI} ^/clip/create 
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R,L]  
# no "s" here ---------^ 

Это вероятно, из-за вашего контроллера Yii. Вам нужно будет предотвратить повторное перенаправление после запрос направляется на контроллер index.php. Добавьте это до самого верха (до редиректов):

RewriteRule index\.php - [L] 
+0

Это была опечатка, у меня нет HTTPS там, и это не работает, даже без -f и -d. Я редактировал свой вопрос. – kromol

+0

@kromol ok, см. Править в разделе --------- –

+0

еще не работает – kromol

0

я ужасно с HTAccess

RewriteEngine On 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteCond %{REQUEST_URI} !^/clip/create [OR] 
RewriteRule ^/directory(.*)$ https://%{HTTP_HOST}/directory$1 [L,R] 

получил правила из here

0

очистить кэш браузера! Я столкнулся со многими из этих проблем, пока я работал над переключением типа соединения между HTTP и HTTPS, и после многих поисков и попыток я обнаружил, что Firefox и хром кэшируют коды ошибок 301 и 302.

0

Это будет работать для вас:!

RewriteEngine on 

RewriteCond %{SERVER_PORT} ^80$ 
RewriteCond %{REQUEST_URI} !/clip/create 
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php 
Смежные вопросы