.htaccess重写返回内容但返回404标题状态

时间:2013-01-28 11:20:53

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

我的.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

当我访问其中一个重写的网址时,例如www.mydomain.com/page/something,来自page.php?slug =的正确内容会在大多数浏览器中显示,但旧版本的Internet Explorer除外,问题是重写的URL返回404标题代码(可能是为什么有些浏览器不会显示内容,而其他浏览器会选择)。

我有其他重写似乎工作并返回200 OK标题,例如:

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

我能看到的唯一区别是上面的重写包含了一个假的.html扩展名,因此不确定这是否被视为不同。

任何帮助都将受到高度赞赏!

非常感谢

1 个答案:

答案 0 :(得分:0)

添加

 header("HTTP/1.0 200");
标题包括之后

,如

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