2010-06-25 2 views
3

У меня есть этот .htaccess файл, но я хотел бы, чтобы это делалось только тогда, когда я нахожусь на сайте..htaccess if/else в зависимости от {SERVER_NAME}?

Есть ли способ, я могу:

// if server_name looks like example.com to this 
// else dont run this bit 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

Я пытался работать с SetEnvIfNoCase и IfDefine без успеха. Не знаю, можно ли делать то, что я хочу.

Заранее спасибо.

EDIT (пример решения для будущих читателей):

// if https is off 
RewriteCond %{HTTPS} off 
// if server_name like example.com (case insensitive) OR 
RewriteCond %{SERVER_NAME} =example.com [NC,OR] 
// server_name like www.example.com (case insensitive)... 
RewriteCond %{SERVER_NAME} =www.example.com [NC] 
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 

Спасибо за большую помощь.

ответ

3

Вы можете добавить это условие к вашим правилам:

RewriteCond %{SERVER_NAME} =www.example.com 
+0

@Marcus Adams: Нет, я имел в виду * SERVER \ _NAME *, как попросил Фрэнки. – Gumbo

+0

@Marcus Adams: 'ServerName' также разрешен в контексте' '. – Gumbo

+0

прямо перед моими глазами ... как я не мог этого видеть! ;) Огромное спасибо! – Frankie

1

Если вы используете другое имя хоста живого сайта:

Просто проверьте HTTP_HOST на каждое состоянии также:

RewriteCond %{HTTP_HOST} www.example.com [NC] 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} (auth|register|secure|payment|admin|trading_careers) 
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] 
+0

Благодарим вас за ввод. Вы оба должны были получить правильный ответ, но Маркус больше нацелился на SERVER_NAME. Я также считаю, что SERVER_NAME следует использовать всегда в ущерб HTTP_HOST, поскольку HTTP_HOST поступает от клиента (справа)? – Frankie

+2

Святое дерьмо. Мне нужно изменить весь мой .htaccess на SERVER_NAME. –

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