2013-03-27 92 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