【问题标题】:how to control request with htaccess如何使用 htaccess 控制请求
【发布时间】:2009-08-19 01:35:31
【问题描述】:
# BEGIN 
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END 

我是 htaccess 的初学者,有没有人帮我描述一下那几行是什么意思?

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    更详细一点:

    • &lt;IfModule mod_rewrite.c&gt;
      &lt;IfModule&gt; block 的内容仅在条件为真时才被处理。在这种情况下,仅在加载模块 mod_rewrite 时才处理包含的指令。

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

    • RewriteBase /
      RewriteBase / 将每个目录的基本 URL 路径设置为 /。但只有在 URL 路径不是物理路径时才需要这样做。

    • RewriteCond %{REQUEST_FILENAME} !-f
      此条件表明请求的文件名(映射到文件系统的请求的 URL 路径)不能是常规文件。

    • RewriteCond %{REQUEST_FILENAME} !-d
      与上一个相同,但不能是现有目录。

    • RewriteRule . /index.php [L]
      此规则将匹配任何非空 URL 路径(更准确地说:请求的 URL 路径没有基本 URL 路径),如果相应的条件都为真,则将其替换为 /index.php。此外,它被标记为最后一条规则,因此当应用该规则时,当前规则处理将在此处停止。

    • &lt;/IfModule&gt;
      对应&lt;IfModule …&gt;

    【讨论】:

      【解决方案2】:

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

      您可能也对mod_rewrite docs 感兴趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 2020-05-13
        • 1970-01-01
        • 1970-01-01
        • 2015-11-02
        • 1970-01-01
        • 2016-01-28
        相关资源
        最近更新 更多