2012-01-06 2 views
8

У меня есть простое правило перезаписи, и она работает должным образом под HTTP:Rewrite Rule для работы по протоколу HTTP и HTTPS

RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$ 
RewriteRule ^/work/all.html /portfolio/ [L,R=301] 

Однако правило не принимает в силу, когда я был на HTTPS , Я изменил правило, установленное на следующее, но безрезультатно.

RewriteCond %{HTTPS} on 
RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$ 
RewriteRule ^/work/all.html /portfolio/ [L,R=301] 

Как я могу сделать это правило работать как на HTTP и HTTPS? Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию.

+1

ли это .htaccess или vhost? Если vhost, просто поместите правила перезаписи в отдельный файл и отправьте его в оба vhosts. – fge

+0

Это vhost. @fge: Вы имели в виду оба vhost для non-ssl и ssl? Извините, это может звучать очень просто, но я только начинаю знакомство с mod-rewrite от Apache. – moey

+1

Ну, директивы mod_rewrite похожи на любые другие, если вы поместите их в другой файл и «Включите» этот файл из другого, он сделает это. Так что да, просто напишите правила в другом файле, который вы включаете как в SSL, так и в не SSL-vhost (удаление «RewriteCond» на HTTPS). – fge

ответ

8

Apache использует другой виртуальный хост для конфигурации SSL:

<IfModule mod_ssl.c> 
    <VirtualHost _default_:443> 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^www\.siku-siku\.com$ 
    RewriteRule ^/work/all.html /portfolio/ [L,R=301] 
    ... 
    </VirtualHost> 
</IfModule> 

Эта ссылка имеет пример для настройки Apache с помощью SSL на Debian, но должно быть легко экстраполировать на какой платформе вы на http://www.debian-administration.org/articles/349

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