簡體   English   中英

當URL包含真實文件名時,為什么我的.htaccess無法正常工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM