Перенаправление с использованием .htaccess
-
09-09-2019 - |
Вопрос
Я хочу перенаправить все запросы страниц пользователей на страницу в том же домене.
Например, у меня есть страница «в разработке, BRB», которую я хочу, чтобы все пользователи видели, когда они пытаются получить доступ к ЛЮБОЙ странице сайта.
Я попробовал использовать это:
Redirect 302 / http://www.domain.com/index2.php
Что это значит, так это попытаться применить перенаправление и к странице index2.php, и оно застревает в цикле, где пользователь затем видит это, пока браузер не остановится.
http://www.domain.com/index2.phpindex2.phpindex2.phpindex2.php etc., etc,
Есть идеи, как записать это правило, кроме этой страницы?
Решение
Вам необходимо исключить файл, на который вы хотите перенаправить.Вот пример с mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule !^index2\.php$ /index2.php [L,R=302]
</IfModule>
Другие советы
Чтобы предотвратить бесконечный цикл (index2.php <--> index2.php):
Перенаправление только в том случае, если URL-адрес для перенаправления НЕ содержит строку index2.php.
RewriteCond %{QUERY_STRING} !index2.php
RewriteRule ^(.*)$ /index2.php [L,R=301]
Вы можете использовать mod_rewrite
<IfModule mod_rewrite.c>
RewriteCond {REQUEST_URI} !=/index2.php
RewriteEngine on
RewriteRule ^.*$ /index2.php
# End .HTACCESS
</IfModule>
Я был бы более склонен использовать немного другой
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/.*$ /index2.php [R=307,L]
</IfModule>
Это позволит вам вернуть временно перемещенный статус для перенаправления.
Отсутствие этого набора флагов означает, что mod_rewrite по умолчанию вернет статус 302 Found.
ХТХ
ваше здоровье,