【问题标题】:.htaccess rewrite returning content but returns 404 header status.htaccess 重写返回内容但返回 404 标头状态
【发布时间】:2013-09-10 19:39:52
【问题描述】:

我在我的 .htaccess 文件中进行了一些重写,看起来像这样(我更改了文件/var 名称,但基本相同):

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([^/\.]+)/pageno=([^/\.]+)?$ page.php?slug=$1&pageno=$2

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([^/\.]+)/?$ page.php?slug=$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([^/\.]+)/([^/\.]+)/pageno=([^/\.]+)?$ page.php?slug=$1&something=$2&pageno=$3

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page/([^/\.]+)/([^/\.]+)/?$ page.php?slug=$1&something=$2

当我访问其中一个重写的 URL(例如 www.mydomain.com/page/something)时,大多数浏览器都会显示 page.php?slug=something 中的正确内容,但旧版本的 Internet Explorer 除外,但真正的问题是重写后的 URL 返回 404 标头代码(这可能是某些浏览器不显示内容而其他浏览器选择显示内容的原因)。

我还有其他似乎有效的重写,并返回 200 个 OK 标头,例如:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)-some-page-([^/\.]+).html?$ some-page.php?pageno=$2&myvar=$1

我能看到的唯一区别是上面的重写包含一个假的 .html 扩展名,所以不确定这是否有任何不同。

任何帮助将不胜感激!

非常感谢

【问题讨论】:

    标签: mod-rewrite rewrite http-status-code-404


    【解决方案1】:

    添加

     header("HTTP/1.0 200");
    

    在你包含标题之后,就像

    define('WP_USE_THEMES', false);
    require($_SERVER['DOCUMENT_ROOT'] . '/blog/wp-blog-header.php');
    header("HTTP/1.0 200");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2014-08-04
      • 1970-01-01
      • 2016-07-11
      相关资源
      最近更新 更多