2010-07-23 69 views
0

我想至少了解.htaccess如何工作。我使用从Zend框架的.htaccess(因为我经常使用的多数民众赞成)配置搜索引擎友好的网址(mod_rewrite)

SetEnv APPLICATION_ENV development 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

第一行设置环境变量,确定简单enuf,但什么后续的行吗?什么是-s -l [NC,L]等。从apache docs我可以看到,

  • -s - 指“一个大小的常规文件”。只是好奇是否有一个非常规的文件?
  • -l - 是指一个符号链接 - 什么是
  • -d - 指directiory
  • REQUEST_FILENAME - 完整的本地文件系统中的文件路径或脚本符合要求
  • REQUEST_URI - 在HTTP请求中请求的资源线。

假设我浏览到“http://localhost/some/path/here”。 REQUEST_FILENAME & REQUEST_URI等于什么?

反正,我现在解释规则

  • 如果请求是与大小或
  • 一个文件,如果请求的是一个链接或
  • 如果请求是一个目录
  • ...做些什么...
  • RewriteRule ^.*$ - [NC,L]是做什么用的?
  • 那么我想航线一切匹配上面的index.php

回答

0

如果URL指向一个真实的文件/目录/链接,服务网址是(第一重写规则行不更改URL规则完全)。否则,重定向到index.php。

+0

第一个'RewriteRule'会做什么吗? – 2010-07-23 13:12:15

+0

第一条规则不会重写URL,但会阻止使用第二个RewriteRule。因此,任何匹配RewriteConds的URL都不会被重定向到index.php。 – Sjoerd 2010-07-23 13:36:22