V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ejin
V2EX  ›  PHP

wordpress下的自写php代码如果遇到500就会出现wordpress的404错误,何解?

  •  
  •   ejin · 2013-11-02 08:10:44 +08:00 · 2765 次点击
    这是一个创建于 3828 天前的主题,其中的信息可能已经有所发展或是发生改变。
    自写的php程序跟php没有半毛钱关系,就是自己自用的其它功能的,也不依赖wordpress,文件夹也是新建的,只是这个站是wordpress为主的,不得不放在里面。

    记得wordpress的网址重写规则是,当文件不存在或者文件夹不存在时,重写到/index.php。

    但是我经常写php遇到500错误的时候,都会变成wordpress的404页面。

    另外也不是所有500错误都会变成wordpress的404页面,是有些情况,说不来为什么,因为有些错误php会直接报错,正常的返回错误。有的500错误直接返回wordpress的404页面。

    php会出现wordpress的404页面时,并非是php跳转或者读取了不存在的文件,因为根本没有对文件操作。
    11 条回复    1970-01-01 08:00:00 +08:00
    chairuosen
        1
    chairuosen  
       2013-11-02 09:07:31 +08:00 via iPad
    子文件夹没单独设置.htaccess好像会用根目录的,你又肯定设置了伪静态所以可能会交由wp判断一下?猜的
    ericls
        2
    ericls  
       2013-11-02 09:53:06 +08:00 via Android   ❤️ 1
    找不到500错误的页面?
    sophy
        3
    sophy  
       2013-11-02 10:11:04 +08:00 via iPad
    因为没有500错误页面,所以就404了
    yanwen
        4
    yanwen  
       2013-11-02 10:17:48 +08:00
    删掉站点下面的.htaccess,然后再wordpress后台重新设置一下伪静态。
    ejin
        5
    ejin  
    OP
       2013-11-02 14:00:10 +08:00
    @chairuosen
    @ericls
    @sophy

    我觉得是不是我没描述清楚呢,php错误不应该是直接输出在页面上的吗?我也没关闭输出500错误啊?为什么需要500页面?(我知道你们说的是500单独一个页面显示500错误,但是我是需要显示报错的,所以500页面自然就不需要了吧)而且平时语法错误,忘记打分号都是会报错并中断的。

    而且在htaccess中也没自定义错误页面。

    @yanwen
    我的htaccess很正常,而且平时访问也没问题,问题出在有500错误的时候,会出现WP的404页


    顺便贴上我的htaccess吧,只有wp目录有。

    DirectoryIndex default.html default.htm default.php index.html index.htm index.php
    LimitRequestBody 10240000
    SetEnv TZ Asia/Shanghai
    #AddOutputFilter DEFLATE html htm xml php js css
    #<ifmodule mod_deflate.c>
    #AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-httpd-php application/x-javascript
    #</ifmodule>
    Options -Indexes
    # BEGIN WPSuperCache
    # END WPSuperCache

    # 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
    bombless
        6
    bombless  
       2013-11-02 15:21:11 +08:00
    噗,有可能一开始你对你的500错误的理解有误
    chairuosen
        7
    chairuosen  
       2013-11-02 18:10:50 +08:00
    @ejin 子目录放个.htaccess写RewriteEngine Off试试呢?
    ejin
        8
    ejin  
    OP
       2013-11-02 18:52:35 +08:00
    @chairuosen
    还是404。日志里也是404
    @bombless
    500就是服务器内部错误嘛,根据不同的服务器设置,有可能会直接在页面输出错误告诉我在哪个文件第几行,也可能直接返回一个独立的什么内容都没有的500页面嘛。

    当然也有可能是服务器没设置好,htaccess编码不对都可能导致
    tonitech
        9
    tonitech  
       2013-11-02 22:52:25 +08:00
    我觉得应该是你的服务器要指向500的错误页面,返回的404应该是找不到500的错误页面。你应该要修改下.htaccess的规则,你可以把php的文件放到你自定义的一个目录里面方便管理和以后添加新的自定义php文件,然后添加一个规则:
    RewriteRule ^/替换为自定义目录名(.*)$ /替换为自定义目录名$1 [L]
    xzl
        10
    xzl  
       2013-11-04 08:54:38 +08:00
    @tonitech 正解,如da,404状态其实是因为500.shtml没有找到,认真看一下access.log就知道了。
    ejin
        11
    ejin  
    OP
       2013-11-04 09:31:23 +08:00
    @xzl 昨天看了日志的 cpanel的日志里写的是404,路径就是php的路径,所以无法判断,今天有空再试试了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5357 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:15 · PVG 16:15 · LAX 01:15 · JFK 04:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.