У меня есть контент на сайте вроде
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]
... или какое-то подобное ограниченное переписывание?