在 WordPress 网站上使用以下内容作为 503 转发器。由于某种原因,它表示 foo.com/xyz,而不是 foo.com 本身。有什么想法吗?
.htaccess 文件:
ErrorDocument 503 /rdi/index.php
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /rdi/index.php [R=503,L]
最佳答案
任何以 /
结尾的 URL 都会请求文件夹,任何不以 /
结尾的 URL 都会请求文件。当您请求 http://example.com
时,您实际上请求 http://example.com/
,即 example.com
的文档根>。您的文档根目录显然是一个现有文件夹,否则您根本无法运行网站。
您正在使用以下规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /rdi/index.php [R=503,L]
第二个条件是:“如果请求的文件名不是目录”。您的文档根是一个目录,因此该条件为假。它不会重写。
您可以使用以下规则:
RewriteCond %{REQUEST_URI} ^/$ [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /rdi/index.php [R=503,L]
这会做什么?如果您请求 http://example.com
,第一个条件将匹配,第二个条件将因 [OR]
标志而被忽略,第三个条件将为真的。如果您请求 http://example.com/rdi/
,第一个条件将为 false,第二个条件将为 false,因此不会使用该规则。如果您请求 http://example.com/asdfasdf/
,第一个条件将为 false,但由于 [OR]
标志,它将尝试第二个条件,这是真的。然后它检查第三个条件是否为真,然后重写请求。
关于linux - 503 htaccess 文件仅部分工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831423/