linux - 503 htaccess 文件仅部分工作

标签 linux wordpress .htaccess mod-rewrite

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

相关文章:

linux - SED 解析时间戳之间的 apache 日志

linux - ext4被认为是文件存储还是 block 存储?

php - WordPress;使用 jquery 和 ajax 更新和存储 session 变量

javascript - WordPress 插件中的 jQuery 冲突 - jQuery 与 WordPress 核心

php - 在 apache 中限制从 Internet 访问

c - linux如何检测文本文件的EOF?

linux - cat 单行显示多行文件内容

javascript - 用于翻译 Ajax 加载内容的 Transposh 插件

php - 更改两个域的根目录

apache - htaccess 在浏览器中启用目录 View 时添加密码