htaccess - цикл перенаправления на тот же домен - PullRequest
0 голосов
/ 05 июля 2018

Я хочу подогреть людей вокруг моего нового проекта, поэтому я хочу, чтобы целевая страница была доступна до определенной даты, а затем она должна перенаправляться на весь сайт.

До указанной даты: Каждый звонок на любую страницу сайта (даже /) должен временно перенаправляться на /promo/index.php

После этой же даты: Каждый звонок в / promo / * должен перенаправлять в корень сайта /

Я начал с первого правила, подобного этому:

RewriteCond %{TIME} <20180705095200 [NC]
RewriteRule ^$ /promo/index.php [R=301,L]

=> До даты: он хорошо перенаправляет root / на promo / index.php, но если я пытаюсь / Home, он не перенаправляет на promo

Я тоже пробовал:

RewriteCond %{TIME} <20180705095200 [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L] # LOOPS

=> До даты: он явно перенаправляет каждый URL на /promo/index.php, но кажется, что он также перенаправляет сам /promo/index.php на себя (он выдает мне ERR_TOO_MANY_REDIRECTS).

Затем я попытался закрыть все остальные мои правила для теста, и цикл продолжает создаваться ...

Редактировать 2 *

Благодаря FoxyFish у меня теперь есть следующий код:

RewriteCond %{REQUEST_URI} !/promo/index.php$ 
RewriteCond %{TIME} <19800705095200 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(jpe?g?|gif|png|js|css|ttf|ico|json) [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L]

RewriteCond %{TIME} >19800705095200 [NC]
RewriteRule /promo/index.php$ / [R=301,L]

Но эффект "После" (: p) не работает ... Я имею в виду: после истечения срока действия /promo/index.php не перенаправляет на /. Это все еще доступно.

Редактировать 3 *

Вот окончательное решение для меня

RewriteCond %{REQUEST_URI} !/promo/index.php$ 
RewriteCond %{TIME} <19800705095200 [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(jpe?g?|gif|png|js|css|ttf|ico|json) [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L]

RewriteCond %{TIME} >19800705095200 [NC]
RewriteRule ^promo/index.php$ / [R=301,L,NC]

Спасибо, FoxyFish !!!!!!

PD: вишня на торте будет переписывать, например, /promo/index.php в / Countdown.

1 Ответ

0 голосов
/ 05 июля 2018
RewriteCond %{REQUEST_URI} !/promo/index.php$ 
RewriteCond %{TIME} <20180705095200 [NC]
RewriteRule ^(.*)$ /promo/index.php [R=301,L]

Это должно предотвратить попадание самой промо-страницы в редирект.

Edit1 *

Чтобы предотвратить попадание других вещей в нужный вам редирект, просто используйте следующее условие ...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.(jpe?g?|gif|png|js|css|ttf|ico|json) [NC]

Просто добавьте или удалите расширения из списка по мере необходимости.

Edit2 *

Используйте отдельное условие / правило, которое должно вступить в силу после истечения срока действия вашего промо.

RewriteCond %{TIME} >20180705095200 [NC]
RewriteRule ^promo/index.php$ / [R=301,L,NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...