WordPress .htaccess和ErrorDocument 400

时间:2012-02-06 19:51:18

标签: wordpress .htaccess

我遇到了永久链接.htaccess代码阻止自定义错误处理的问题。当我删除WordPress代码时,错误处理工作正常。

这是我的代码:

php_value memory_limit 96M
php_value upload_max_filesize 250M
php_value post_max_size 250M

# 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>

# END WordPress

ErrorDocument 400 /error.php

AddType application/msword doc
AddType application/vnd.ms-excel xls
AddType application/powerpoint ppt
AddType application/vnd.ms-word.document.macroEnabled.12 .docm
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.document docx
AddType application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx
AddType application/vnd.ms-powerpoint.template.macroEnabled.12 potm
AddType application/vnd.openxmlformats-officedocument.presentationml.template potx
AddType application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam
AddType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm
AddType application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx
AddType application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm
AddType application/vnd.openxmlformats-officedocument.presentationml.presentation pptx
AddType application/vnd.ms-excel.addin.macroEnabled.12 xlam
AddType application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb
AddType application/vnd.ms-excel.sheet.macroEnabled.12 xlsm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx
AddType application/vnd.ms-excel.template.macroEnabled.12 xltm
AddType application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx

有没有办法保持WordPress代码不变,仍有400个错误的自定义错误文档?

提前致谢,

斯科蒂

2 个答案:

答案 0 :(得分:0)

Wordpress使用bootstrap index.php文件。 wordpress目录中的所有请求都由它处理。因此,自定义错误文档无法通过apache工作,您需要在正在使用的Wordpress主题中为它们创建模板页面。

答案 1 :(得分:0)

如果您想在WordPress中使用当前主题的自定义错误页面,则需要执行以下操作...

  1. 将.htaccess ErrorDocument条目更改为ErrorDocument 400 /index.php?error=400
  2. 在当前的WordPress主题中创建400.php模板页面。请务必添加正常的get_header()get_footer()代码。理想情况下,您的主题已经有404.php个文件,因此只需将其复制,重命名,然后更改其中的内容/消息。
  3. 将以下代码添加到functions.php
  4. (你可以把它放在最后一行或任何地方)

    /**
    * 400 Error Code Reponse Header
    * Note: This allows you to specify 400 RewriteRules in the .htaccess to use a custom 400.php WordPress template.
    * Source: http://otroblogmas.com/retornar-410-wordpress/
    *
    * @param string $template
    * @return string
    */
    function e12_response_400( $template ) {
        if( '400' == $_SERVER['REDIRECT_STATUS'] ) {
            status_header( 400 );
            if( file_exists( STYLESHEETPATH . '/400.php' ) ) {
                return STYLESHEETPATH . '/400.php';
            }
        }
        return $template;
    }
    add_filter( 'template_include', 'e12_response_400' );