我有一個(gè)帶有自定義 .htaccess 文件的站點(diǎn),它處理的事情很少:1)它將沒有“.php”擴(kuò)展名的url視為最后有“.php”。2)它重定向http://和http://www.網(wǎng)址https://www.這是 .htaccess 文件:ErrorDocument 404 /404.phpOptions -MultiViews RewriteEngine On## add www and turn on https in same ruleRewriteCond %{HTTP_HOST} !^www\. [NC,OR]RewriteCond %{HTTPS} !onRewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]# if not a directory and .php file is present then add .php extensionRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^(.+?)/?$ $1.php [L]一切都按預(yù)期工作,但我觀察到一些奇怪的行為導(dǎo)致 500 錯(cuò)誤而不是 404:1)當(dāng)您訪問不存在的根級(jí)別 url,例如https://www.example.com/skjdfhkj404時(shí),它會(huì)按預(yù)期重定向到。2)當(dāng)您訪問不存在的嵌套 url 例如https://www.example.com/some-text/skjdfhkj與任何現(xiàn)有的some-textphp 文件不匹配時(shí),它會(huì)404按預(yù)期返回。3)但是,當(dāng)您訪問一些不存在的嵌套 url 時(shí),例如https://www.example.com/some-existing-page-name/skjdfhkj,其中some-existing-page-name匹配現(xiàn)有 php 文件的名稱(https://www. example.com/some-existing-page-name.php),然后它給出一個(gè)500 Server Error.我的問題是:如何更新我的 htaccess 以正確返回 a404而不是500當(dāng)有人訪問不存在的嵌套 url 例如https://www.example.com/some-existing-page-name/skjdfhkj(其中some-existing-page-name匹配名稱現(xiàn)有的 php 文件 ( https://www.example.com/some-existing-page-name.php )) ?我想這與 mod rewrite 有關(guān)系,它將沒有.php擴(kuò)展名的 url 視為有.php,但不知道如何修改 htaccess 以使其正常工作:(
1 回答

湖上湖
TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
嘗試將最后一條規(guī)則更改為:
# if not a directory and .php file is present then add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
%{REQUEST_FILENAME}有時(shí)可以使用部分匹配從文件系統(tǒng)中提供意外匹配。
- 1 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)
0/150
提交
取消