繁体   English   中英

.htaccess mod_rewrite规则“有效”,但是服务器发送404代码!

[英].htaccess mod_rewrite rule “works”, but server sends 404 code!

我的Webroot上有以下.htaccess文件:

DirectoryIndex index.htm index.html index.php AddType application/x-httpd-php .htm .html
RewriteEngine On
RewriteBase /

RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L]

RewriteCond $1 !\.(gif|jpe?g|png|ico|css|js|pdf|mp3|flv|swf)$
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.+)\.htm$ /$1.php [nc,L,QSA]

重写规则的目的是将对扩展名为.htm的页面的任何请求更改为对扩展名为.php的相同文件名的请求(除非实际上存在扩展名为.htm的文件)。 从某种意义上说,如果我要求使用扩展名为.htm的页面,那么此规则似乎“有效”,我可以获得PHP内容。 这就是我想要的,但是同时HTTP标头检查器工具报告该网站给出了404响应。 奇怪的是,我的工具报告在THE SAME RESPONSE主体中,服务器返回了PHP代码生成的正确HTML。 这似乎是一个矛盾:找不到页面,但是无论如何这就是您想要的内容?

如果我强制服务器发送200代码([R = 200]),则会收到“内部服务器错误”响应,如果我强制服务器发送301代码([R = 301]),结果将是浏览器发出2个HTTP请求,而不是1个,无论如何,第二个请求最终还是一个404(但是我仍然在响应正文中获得了所需的HTML!)。 我糊涂了!!!

解决了。 由于页面代码中的错误,CMS软件正在发送404标头。 解决此问题后,我就停止在响应标头中获取404代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM