Условное перенаправление с доменом в .htaccess

Я хотел бы сделать перенаправление в Apache с доменом на основе правило. Например,

Если пользователь обращается к странице с example.com или другой связанной страницы ( example.com/another-url/ ), тогда перенаправьте на example .com / page.html . В противном случае покажите нормальную страницу.

Я пишу в .htaccess :

<IfModule mod_rewrite.c>    
    RewriteEngine on
    RewriteCond %{REMOTE_ADDR} !^example.com
    RewriteRule .* /page.html [R=302,L]    
</IfModule>

Но это не работает.

-1
задан 15 March 2017 в 00:56
1 ответ

Предположительно у вас на этой учетной записи несколько доменов?

Для перенаправления либо example.com/, либо example.com/another-url/ на пример. com/page.html тогда вы можете сделать что-то подобное в .htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(|another-url/)$ /page.html [R=302,L]

Серверная переменная HTTP_HOST содержит запрашиваемый хост. Шаблон ^(|another-url/)$ совпадает либо с пустым URL-путем (т.е. корнем документа), либо с другим-url/ (за вычетом префикса каталога).

RewriteCond %{REMOTE_ADDR}. !^one.domain.com
RewriteRule .* /page.html [R=302,L] 
Это перенаправило бы  все  на /page.html . Проблема с исходными директивами...

  • REMOTE_ADDR - это IP-адрес клиента, делающего запрос, а не запрашиваемый хост .
  • Префикс ! на CondPattern отрицает регекс. Итак, в приведенном выше примере он совпадает, когда REMOTE_ADDR - это , а не example.com. (Всегда верно.)
  • Шаблон .* RewriteRule совпадает с каждым URL!
2
ответ дан 5 December 2019 в 19:22

Теги

Похожие вопросы