簡體   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