【发布时间】: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