什么是没有mod_rewrite的网址?

时间:2012-03-11 16:59:40

标签: php mod-rewrite content-management-system

有一个开源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}

但在这里是不同的

2 个答案:

答案 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并提供相应的文件。