2009-08-18 58 views
1
# BEGIN 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END 

我是htaccess的初学者,所以任何人都可以帮我描述一下这些代码行是什么意思?如何用htaccess控制请求

回答

4

更详细一点:如果条件为真

  • <IfModule mod_rewrite.c>
    一个<IfModule> block的内容仅处理。在这种情况下,只有在加载了模块mod_rewrite的情况下,才会处理所包含的指令。

  • RewriteEngine On
    RewriteEngine On需要启用该目录及其子目录重写引擎。

  • RewriteBase /
    RewriteBase /设置每目录基URL路径/。但是这只有在URL路径不是物理路径时才是必需的。

  • RewriteCond %{REQUEST_FILENAME} !-f
    这条件是:被请求的文件名(映射到文件系统中的请求的URL路径)不能是一个普通的文件。

  • RewriteCond %{REQUEST_FILENAME} !-d
    同为以前的,但它不能是一个存在的目录。如果相应的条件都为真与/index.php和替代它:

  • RewriteRule . /index.php [L]
    此规则将匹配任何非空URL路径(无底座URL路径的请求的URL路径,更精确)。此外,它被标记为最后一条规则,所以当应用规则时,当前规则处理将停在此处。

  • </IfModule>
    对口<IfModule …>

+0

这就是我要找的,谢谢你 – coderex 2009-08-19 05:33:32

2

.htaccess将重写所有请求,除了存在于重写库(此.htaccess所在的目录,看起来像)到/index.php中的目录和物理文件。对于许多框架和内容管理系统来说,这是一个相当标准的做法,可以实现“漂亮”的URL(比如你可以看到Stack Overflow)。

您可能也有兴趣mod_rewrite docs