如何在 .htaccess 503 重定向中保持网站 url 相同
How to keep website url the same in .htaccess 503 redirect
我有一个 .htaccess 文件,我已经建立了一个 'Coming Soon' 网站。它排除了我的 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
我该怎么做?非常感谢帮助
如果您不想更改 URL,则只需从 RewriteRule
中删除重定向标志即可。
执行以下操作:
改变
RewriteRule ^(.*)$ /HTML/pages/construction.html [R=302,L]
到
RewriteRule ^(.*)$ /HTML/pages/construction.html [L]
此处显示的代码中没有“503”响应,除非您在 server-side 脚本中手动设置 HTTP 响应状态。但如果这是一个 .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
环境变量的条件做了两件事:
它确保 503 ErrorDocument 本身的内部子请求不会触发 503 - 这将导致无限循环并且响应中不会返回自定义 ErrorDocument。
直接请求 /HTML/pages/construction.html
文档(503 ErrorDocument)本身将触发 503 响应。
另请注意,如果您要发送 503 响应,理想情况下您应该发送 Revisit-After
HTTP 响应 header 以及向(搜索引擎)机器人指示您的网站何时可用.
我有一个 .htaccess 文件,我已经建立了一个 'Coming Soon' 网站。它排除了我的 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
我该怎么做?非常感谢帮助
如果您不想更改 URL,则只需从 RewriteRule
中删除重定向标志即可。
执行以下操作:
改变
RewriteRule ^(.*)$ /HTML/pages/construction.html [R=302,L]
到
RewriteRule ^(.*)$ /HTML/pages/construction.html [L]
此处显示的代码中没有“503”响应,除非您在 server-side 脚本中手动设置 HTTP 响应状态。但如果这是一个 .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
环境变量的条件做了两件事:
它确保 503 ErrorDocument 本身的内部子请求不会触发 503 - 这将导致无限循环并且响应中不会返回自定义 ErrorDocument。
直接请求
/HTML/pages/construction.html
文档(503 ErrorDocument)本身将触发 503 响应。
另请注意,如果您要发送 503 响应,理想情况下您应该发送 Revisit-After
HTTP 响应 header 以及向(搜索引擎)机器人指示您的网站何时可用.