Назад | Перейти на главную страницу

Перенаправление только для root с использованием .htaccess

У меня есть контент на сайте вроде

mysite.com/index.php

mysite.com/apps

Теперь я хочу разместить страницу обслуживания, чтобы люди, которые будут посещать mysite.com или mysite.com/index.php, могли видеть страницу обслуживания, однако посетители будут переходить на mysite.com/apps или mysite.com/apps/index. php не будет перенаправлять на страницу обслуживания.

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

Это перенаправляет корневую и подпапку на страницу обслуживания.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(.*)$ http://mysite.com/maintenance.html/$1 [R=301,L]

Это ничего не делает

RewriteEngine on
RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
Rewriterule ^(.*)$ http://mysecondsite.com/ [L,R=301]

Согласно HTTP Spec правильным ответом на возврат будет 503 Сервис недоступен, и вы должны делать это из /, а не перенаправлять.

Вы можете использовать решение Bittrance, оно должно работать, хотя вы, возможно, захотите разделить правила, поскольку вы, вероятно, захотите перенаправить index.php в / в долгосрочной перспективе.

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


Подводя итог, я думаю, что лучшим решением было бы перенаправление 301 index.php на /, так как вы все равно захотите, и пока вы выполняете обслуживание, / должен возвращать 503 (и у вас все еще может быть хорошая страница обслуживания там ), ваша задача PHP - обслуживать его, а не htaccess.

Не уверен, что понимаю ваш вопрос. По какой-то причине вы не можете этого сделать:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC]
RewriteRule ^(|/|/index.php)$ http://mysite.com/maintenance.html/ [R=301,L]

... или какое-то подобное ограниченное переписывание?