【问题标题】:Apache httpd.conf rewrite rulesApache httpd.conf 重写规则
【发布时间】:2014-02-01 00:26:41
【问题描述】:

我的 httpd.conf 文件中有一些重写规则。有没有办法让 apache 仅在 url 无效时检查重写规则?我的重写规则之前是检查 REQUEST_FILENAME 是一个有效文件和一个有效文件夹。但是文档提到只有在找到重写规则的匹配项之后才会检查重写条件。

因此,只要有对 URL 的请求,apache 就会检查该 URL 的每个重写规则。几乎所有的页面都有图像、.js 和 .css 文件以及一些其他文件。 Apache 也会根据 httpd.conf 中的重写规则检查这些(我在为每个 URL 生成的 RewriteLog 中看到了这一点)。这会显着降低网站速度。

我知道 FallbackResource 指令。我现在不想使用它,因为它默认返回 200 的 http 状态代码。每当有对 Apache 未找到的页面的请求时,我想返回正确的状态代码(通常是 301)(通常,不正确的 URL 有正确的对应项,因此需要发送 301)。发送正确的 http 状态码也有利于我们的 seo 工作。如果有办法使用 FallbackResource 指令发送正确的 http 状态代码,我愿意使用该选项。

我曾尝试用谷歌搜索这些问题,但没有找到答案。我尝试过使用不同的 RewriteCond (s),但是,就像文档说的那样,无论如何都会检查每个 rewriterule。

对此的任何指示都会有很大帮助。

【问题讨论】:

    标签: apache mod-rewrite url-rewriting


    【解决方案1】:

    看起来确实需要为您做一些阅读,但是,当涉及到重写规则时,我总是将其用作“圣经”,并且一直没有让我失望。也许这对你也有同样的作用。

    http://corz.org/server/tricks/htaccess2.php

    【讨论】:

      【解决方案2】:

      为什么不使用以下内容:

      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^.*$ /not-found.php [L]
      

      我会在根文件夹中放入一个 .htaccess 文件。这样您就可以轻松地为每个站点自定义它。

      【讨论】:

        猜你喜欢
        • 2014-09-01
        • 2012-04-20
        • 2012-10-08
        • 1970-01-01
        • 2011-09-02
        • 2011-10-26
        • 1970-01-01
        相关资源
        最近更新 更多