2013-03-27 84 views
0

我希望直接.php請求得到一個notfound錯誤。國防部改寫直接.php訪問

的作用是這樣的:

RewriteRule ^update/([^/]+)/([^/]+)$ update.php?version=$1&action=$2 [QSA,L] 

一個正確的請求應

http://localhost/update/0.95/info 

但爲什麼:

http://localhost/update.php/0.95/info 

還能用嗎?爲什麼角色匹配?

感謝

+0

我看不出任何他們會匹配,因爲規則要求的網址開頭爲'update',並貼出網址開頭爲'/ test'。您的配置中是否有其他重寫規則? – 2013-03-27 13:18:12

+0

對不起生氣壞。複製並粘貼錯誤。現在修復它。 – Michael 2013-03-27 13:20:42

+0

爲了@邁克爾的防守,他可以使用'RewriteBase/test /'指令:) – kjetilh 2013-03-27 13:33:11

回答

0

重寫規則不比賽http://localhost/update.php/0.95/info。查詢參數版本和操作不會被設置。該URL仍然有效,但它會工作並指向update.php

下面是一個/update.php/0.95/info SERVER提取物:

[QUERY_STRING] => 
[REQUEST_URI] => /update.php/0.95/info 
[SCRIPT_NAME] => /update.php 
[PATH_INFO] => /0.95/info 
+0

是的,它是怎麼樣的,如果我想它不會重定向它,導致.php?我希望你明白我的意思。 ty – Michael 2013-03-27 13:31:41

+0

我想我是。沒有重定向到URL「http:// localhost/update.php/0.95/info」,web服務器只是將請求解釋爲**/update.php **文件的請求。 – kjetilh 2013-03-27 13:34:49

+0

這有點奇怪^^。如果我訪問 http:// localhost/update 我找不到。那裏有什麼不對。我應該爲.php訪問獲取一個notfounf,以及由於規則不是馬赫的原因,就像上面的例子那樣。我沒有得到它 – Michael 2013-03-27 13:37:36