我正在升级一个网站,并使用这个 .htaccess 文件来显示维护页面:
#MAINTENANCE-PAGE REDIRECT
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 # Bogus IP address for posting here
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 # Bogus IP address for posting here
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.mysite.no/maintenance.html [R=307,L]
这将为除我添加的两个 IP 地址之外的所有用户打开维护页面。他们获得一个Internal Server Error
。我在另一个网站上使用了相同的脚本,效果很好。
查看错误日志,我看到以下内容:
/var/www/vhosts/mysite.no/httpdocs/.htaccess: RewriteCond: bad flag delimiters
如果我删除我的 .htaccess 文件,我就可以正常使用我的网站了。
我的网站托管在使用 CentOS 5 的 VPN 上。
我该如何解决这个问题?
答案1
我相信你必须使用[OR]
标志来链接规则,如下所示:
#MAINTENANCE-PAGE REDIRECT
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 [OR]
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.0 [OR]
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://www.mysite.no/maintenance.html [R=307,L]
在 apache 文档中,它位于本节的底部作为示例:http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
此外,您可以使用RewriteLog
和RewriteLogLevel 3
指令来获得更多见解。
答案2
需要尝试/检查的一些事项:
- 确保
mod_rewrite
已在 apache 中加载并启用。 - 确保文件
FileInfo
允许覆盖(使用AllowOverride
).htaccess
。 - 从你的行中删除注释
RewriteCond
。