仅使用 .htaccess 进行根重定向

仅使用 .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]

答案1

根据HTTP 规范正确的回应应该是503服务不可用,您应该从 / 执行此操作,而不是重定向。

您可以使用 Bittrance 的解决方案,它应该可以起作用,尽管您可能希望分离出规则,因为从长远来看您可能希望将 index.php 重定向到 /。

我绝对不鼓励使用 301 重定向指向维护页面,这表明它是永久重定向而不是维护,如果您必须进行重定向,我建议使用 302。


总而言之,我认为最好的解决方案是将 index.php 301 重定向到 /,因为无论如何你都会想要这样做,并且在你执行维护时,/ 应该返回 503(并且你仍然可以在那里有一个不错的维护页面),它只是你的 PHP 的工作来为其提供服务,而不是 htaccess。

答案2

我不确定我是否理解了你的问题。有什么原因导致你不能这样做:

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

...或者一些类似的有限的rerwriter规则?

相关内容