如何在.htaccess 503重定向中保持网站URL不变

3

我有一个 .htaccess 文件,并设置了一个“即将推出”的网站。它排除了我的 IP,因为我是开发人员,但对于其他访问者,我不希望它改变地址栏中的 URL。

以下是该文件的内容:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^12.345.67.89$
RewriteCond %{REQUEST_URI} !/HTML/pages/construction.html
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|ico|mp4) [NC]
RewriteRule ^(.*)$ /HTML/pages/construction.html [R=302,L]

ErrorDocument 404 /HTML/error-pages/404.html

我该怎么做?非常感谢您的帮助。

2个回答

3
如果您不想更改URL,则只需从您的 RewriteRule 中删除重定向标志即可。
请按照以下步骤执行:
更改为:
RewriteRule ^(.*)$ /HTML/pages/construction.html [R=302,L]

To

RewriteRule ^(.*)$ /HTML/pages/construction.html [L]

尽管这不会提供503(即“即将推出”)响应,但它是“200 OK”。 - MrWhite

1
除非您在服务器端脚本中手动设置HTTP响应状态,否则此处呈现的代码中没有“503”响应。但如果这是一个.html文件,那么似乎不太可能。
要正确提供“503服务不可用”响应,您应该定义适当的ErrorDocument并使用R标志调用它。
例如:
Options +FollowSymlinks

ErrorDocument 404 /HTML/error-pages/404.html
ErrorDocument 503 /HTML/pages/construction.html

RewriteEngine On

# 503 Service Unavailable except for the given IP address
RewriteCond %{REMOTE_ADDR} !^203\.0\.113\.111$
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule !\.(jpe?g?|png|gif|css|ico|mp4)$ - [NC,R=503,L]

尽管使用了 R 标志,但这里没有外部重定向。(重定向仅在 3xx 状态码范围内发生。)
检查 REDIRECT_STATUS 环境变量的条件有两个作用:
1. 确保对于 503 错误文档本身的内部子请求不会触发 503 - 这将导致无限循环并且响应中不返回自定义错误文档。
2. 对于直接请求 /HTML/pages/construction.html 文档(即 503 错误文档)本身将会触发 503 响应。
此外,请注意如果您发送 503 响应,最好也发送一个 Revisit-After HTTP 响应头,以指示(搜索引擎)机器人您的网站何时可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接