我有类似的网站内容
mysite.com/index.php
mysite.com/apps
现在我想把一个维护页面,以便将访问mysite.com或mysite.com/index.php的人将能够看到维护页面,但访问者将去mysite.com/apps或mysite.com/apps/index。 PHP不会redirect到维护页面。
我已经试过这些:
这将根和子文件夹redirect到维护页面。
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规范 ,正确的返回响应是503服务不可用 ,你应该从/而不是redirect来做到这一点。
你可以使用Bittrance的解决scheme,它应该工作,虽然你可能想分开规则,因为你可能要redirectindex.php /长期运行。
我肯定会劝阻使用301redirect指向维护页面,这将表明,这是一个永久的redirect而不是维护,如果你必须做一个redirect我build议使用302。
总而言之,我认为最好的解决scheme是将301redirectindex.php到/因为无论如何你都要这么做,而当你执行维护时,/应该返回一个503(并且你仍然可以在那里有一个很好的维护页面),这只是你的PHP的工作,而不是htaccess服务。
不知道我明白你的问题。 有没有什么原因,你不能这样做:
RewriteEngine On RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC] RewriteRule ^(|/|/index.php)$ http://mysite.com/maintenance.html/ [R=301,L]
…或者一些类似的有限重印吗?