503 htaccess文件只能部分工作

在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] 

/结束请求文件夹的任何网址,以及任何不以/结束/请求文件的网址。 当您请求http://example.com ,您实际上请求了example.com的文档根目录http://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]标志而被忽略,第三个条件将为true。 如果您请求http://example.com/rdi/ ,则第一个条件将为false,第二个条件为false,因此不会使用该规则。 如果您请求http://example.com/asdfasdf/ ,则第一个条件将是错误的,但由于[OR]标志,它将尝试第二个条件,这是正确的。 然后检查第三个条件是否为真,然后重写请求。