我的問題與這個問題有些相似,但不完全一樣,我無法理解它以適應我的需要。
我有這個 htaccess 規則來洗掉運行良好的檔案擴展名
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.] )$ $1.php [NC,L]
所以/somepage指/somepage.php。我現在需要一種回退方式,以防萬一somepage.php不存在。
在這種情況下/somepage將重寫/catchall.php?link=somepage哪個可以處理請求。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您當前的規則是.php盲目地添加擴展名而不檢查匹配.php檔案的存在。您可以調整規則以檢查.php檔案是否存在,然后僅添加.php. 當匹配的.php檔案不存在時,我們可以重寫為/catchall.php.
RewriteEngine On
# add .php extension only if a matching .php file exists
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(. ?)/?$ $1.php [L]
# If URI is still not pointing to a valid file/directory
# then rewrite to /catchall.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . catchall.php?link=$0 [L,QSA]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433997.html
