我正在尝试创建一个脚本来放置我网站上的所有页面,如果某某文件存在于根目录(“/”)中,它将自动重定向到它并且如果文件不存在则无效。
我正在使用这个,所以我可以为网站设置一个维护模式,这样我就可以在我工作时将其删除。我已经制作了维护页面,我只是不知道如何设置脚本。文件名是maintenance.html
,我只希望它在根文件中。我不想将其上传到每个目录以使网站失效。
文件网址为http://domain.tld/maintenance.html
,如果文件在那里,脚本将会移动,如果不存在重定向,则重定向到该文件。
我知道重定向代码是(用HTML格式)
<meta HTTP-EQUIV="REFRESH" content="0; url=http://domain.tld">
答案 0 :(得分:3)
您应该在.htaccess文件中尝试此操作:
RedirectPermanent / /maintenance.html
RedirectPermanent /page2.html /maintenance.html
RedirectPermanent /anotherpage.html /maintenance.html
等等。因此,只需为您网站的每个页面执行此操作,然后在每个新页面上执行此操作。
这会将您的每个网页重定向到维护页面。
在我看来,.htaccess是最好的方式。 (比JavaScript更好)
希望这有帮助。
编辑:
要使用它,首先要放:
RedirectPermanent
然后是空格,然后是您要重定向到维护页面的页面:
/page.html
然后是另一个空格,然后是您要重定向到的页面:
/maintenance.html
所以,总之,这是一个例子:
RedirectPermanent /page.html /maintenance.html
请注意 RedirectPermanent 之间的空格,页面从重定向,页面重定向到。
它的工作方式,我不知道。这不是一个脚本,它是一个.htaccess文件代码。
答案 1 :(得分:2)
您可以使用:
if(file_exists('/file.php'))
{
//do something if file exists
}
答案 2 :(得分:2)
更好的方法是将.htaccess命名文件放在根文件夹中,其中包含以下内容:
ErrorDocument 404 /maintenance.html
如果被叫页面不存在,则会自动重定向到此页面。
答案 3 :(得分:1)
当您的网络服务器可以为您执行此操作时,编写自己的服务器端脚本以检查文件效率不高。在.htaccess文件中使用Apache的mod_rewrite功能;当您想要将页面置于维护模式时,您将启用(即取消注释)重写规则。如果您通过规则允许从您自己的IP访问,那么这样做也可以让您在工作时访问该网站。
如果这是免费托管 - 它似乎是 - 那么你可能无法做到这一点,但我不明白为什么它会成为一个主要问题。大多数网络服务器软件都有某种重写功能,这是一个相当简单的重写。
或者你可以使用类似于此的快速和脏的Javascript(可能不是这样):
<script type="text/javascript">location = www.yoursite.com/maintenance.html;</script>
不过,最好使用重写。
答案 4 :(得分:1)
您需要一套适用于您的网络服务器的重定向规则。如果你正在运行Apache,mod_rewrite
是一个神奇的词,如果你正在运行别的东西,那么,我不会知道这个神奇的词,但是大多数服务器都存在类似的东西,如果不是全部的话。
但是,使用Apache辉煌的mod_rewrite
,将所有流量重定向到设置页面或地址,例如在维护期间,简单如下:
<IfModule mod_rewrite.c>
# Use mod_rewrite
RewriteEngine on
# If you want, you can exclude yourself by adding a condition for the redirection,
# i.e. if the RewriteCond matches, proceed with the RewriteRule
# This statement checks that the IP of the client isn't 123.456.789.012
RewriteCond %{REMOTE_ADDR} !123.456.789.012
# Redirect all traffic to /maintenance.html with a "307 Temporary Redirect",
# except traffic to the maintenance page.
RewriteCond %{REQUEST_FILENAME} !maintenance.html
RewriteRule .* /maintenance.html [R=307,L]
</IfModule>
你问这些说明应该在哪里?好吧,因为它是一个临时的东西,最合乎逻辑的是你的webroot中的.htaccess
文件。但是也可以在服务器/虚拟主机全局配置中包含相同的内容,从优化方面来看,永久规则集是有意义的。
要禁用重定向,只需注释掉RewriteEngine on
语句或RedirectRule
语句即可。您也可以将.htaccess
重命名为其他内容或删除它。