[英]Why doesn't my .htaccess work when the URL includes a real file name?
我正在嘗試將某個子目錄中的所有請求傳遞給一個名為“ handler.php”的文件。 如果URL不是一個實際的文件名,那么我擁有的.htaccess起作用了,但是如果我輸入了一個真實文件的名字,則不會。 而是直接加載該文件,而不用單擊handler.php。
有人可以告訴我我在做什么錯嗎? .htaccess文件如下所示:
RewriteEngine On
RewriteRule ^$ handler.php?url=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /handler.php?url=$1 [L,QSA]
我在這里做錯什么了嗎? 我希望所有請求將URL傳遞到handler.php。
該規則與實際文件不匹配,因為條件如此
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
如果請求不( !
)與實際文件( -f
)匹配,並且與真實目錄( -d
)不匹配,則這些條件匹配。
如果您無論如何都要處理所有請求,請刪除這些條件。 您也可以刪除第一個規則,因為它也由該規則處理。 這只剩下第二條規則,但是您必須防止具有其他條件的重寫循環
RewriteCond %{REQUEST_URI} !^/handler\.php
RewriteRule ^(.*)$ /handler.php?url=$1 [L,QSA]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.