有一个开源CMS使用MVC模型,在.httaccess中有
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [NE,L]
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
所以,请说url是htpp://site.com/admin/settings
有一个名为控制器的文件夹,其中包含文件admin_settings.php
如何获得完整的网址我尝试这个,但它起作用 HTPP://site.com/index.php:admin_sesstings.php
//因为它是一个MVC,我们从index.php
访问了一些东西我见过像index.php这样的东西?url = {filename}
但在这里是不同的
答案 0 :(得分:2)
这是逐行的实际翻译:
如果请求的URI未指向磁盘上的实际,现有的文件:
RewriteCond %{REQUEST_FILENAME} !-f
...如果请求的URI没有指向磁盘上实际的,真实的,现有的文件夹:
RewriteCond %{REQUEST_FILENAME} !-d
然后无论如何,将整个URI ^(.*)$
重定向到index.php
并重新添加查询字符串(nota:只添加QSA
指令应该做同样但比添加更快手动%{QUERY_STRING}
):
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [NE,L]
如果你到达这一点,这意味着URI指向系统的真实,实际文件或系统的真实,实际文件夹,因此:无论是什么,添加和授权密码:{{1} }:
%{HTTP:Authorization}
现在你可以说你已经逐行解释了!
请避免像“因为它是MVC你访问”这样的可怕事情,因为:
答案 1 :(得分:0)
// this reads if requested is NOT FILE and is NOT DIRECTORY...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
意思是如果您实际请求现有文件,它将“按原样”提供。
因此,您应该将浏览器指向http://site.com/controllers/admin_settings.php
并提供相应的文件。