禁用某个特定页面/文件夹的WordPress 404以接收实际的php错误

时间:2016-02-12 作者:Natalia

我有一个基于Wordpress的网站,有一个额外的定制PHP应用程序,其中的文件位于自己的文件夹中——“员工”、“志愿者”等。我们在中有mod rewrite。htaccess文件,以便我们可以使用permalinks

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我在“staff”文件夹中有一个特定的页面“form.php”,这给我带来了麻烦,特别是在Apache/php升级后,POST变量中的撇号似乎会导致问题,但我得到的不是php或SQL错误,而是Wordpress 404页面。如何更改该选项,以便开始故障排除?我不能禁用permalinks,该网站是实时的。

RewriteEngine Off 在里面“staff”文件夹中的htaccess不执行任何操作。

I am attaching two screenshots to show that the file indeed exists. 第一幅图显示了如果表单textarea变量有撇号加空格,会发生什么情况,第二幅图显示撇号本身不会导致问题。

非常感谢。

更新:我把它归结为字母、空格和撇号的特定组合

always rembember to \'select\' - 给出一致的404错误always remember to \'salut\' - 没有

所以我认为是保留查询词(?)再加上引起问题的撇号,如果我能将Wordpress排除在这个文件夹之外,我们就不会有任何问题了!

更新2:问题原来是Apache的一般错误-mod sec问题。然而,404页并没有生成403 forbidden(更容易进行故障排除),反而使故障排除过程变得复杂。

2 个回复
最合适的回答,由SO网友:bosco 整理而成

您可以添加RewriteRule 到您的.htaccess 指示mod_rewrite 停止处理以开头的任何URIStaff/ 或决定Staff:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteRule ^/?Staff(/|$) - [END,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
实际上,这应该与RewriteEngine Off a中的指令.htaccess 文件位于/Staff.

打破新规则:RewriteRule ^/?Staff(/|$) - [END,NC]

  • ^/?Staff(/|$): a的第一个参数RewriteRule 是一个REGEX模式,用于对照请求URI的路径部分进行检查,在本例中Staff/Schedule/Schedu-Mod_Results_test.php
    • ^ 匹配URI路径的最开头/? 匹配是否存在前导正斜杠(这仅用于补偿旧Apache服务器-Apache 2+)中不需要它Staff 匹配文本字符串Staff
    • (/|$) 匹配正斜杠或URI路径的最末端-: 如果在URI路径中找到该模式,则第二个参数指定用什么替换整个URI路径。在这种情况下- 指示不应修改URI
    • [END,NC]: 第三个参数由进一步修改规则的布尔标志组成
      • END 与L(last)相似,但表示这应该是very last 在目录上下文中处理的规则:如果模式与URI匹配,则不要处理任何后续重写规则或轮次(从而消除将请求交给WordPress的任何可能性)
      • NC (NoCase)使模式匹配大小写不起作用

SO网友:Linnea Huxford

WordPress有几种查看PHP错误、警告和通知的方法。具体而言,您可以将WP\\u DEBUG设置为true,并启用WP\\u DEBUG\\u LOG和WP\\u DEBUG\\u DISPLAY,如下所示these instructions.

但是,我不确定这是否会解决您的问题,因为404错误可能表明您的文件不存在,这可能不会生成任何PHP错误。您确定在正确的服务器上输入了准确的url吗?

相关推荐

Redirect htaccess

我需要帮助重定向我的页面。例如,我有网站https://example.com. 我需要将内容从https://example.com 到https://example.com/blog. 这不是问题,我通过更改主页URL来做到这一点。这很有效。但现在我需要添加来自旧的重定向https://example.com 到https://xmpl.com.我想用。htaccess,但这不起作用。你们能帮帮我吗?以下是我对此的一些尝试,但两者都不起作用。RewriteEngine On RewriteRu