【问题标题】:What happens first? .htaccess or php code?首先会发生什么? .htaccess 还是 php 代码?
【发布时间】:2010-09-14 13:49:26
【问题描述】:

如果我使用 mod_rewrite 来控制我的所有 301 重定向,这会在我的页面被提供之前发生吗?因此,如果我在页面上运行的 php 脚本中也有一堆重定向规则,那么 .htaccess 会先启动吗?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    是的,.htaccess 文件在您的脚本被提供之前被解析。

    【讨论】:

      【解决方案2】:

      .htaccess 首先发生。

      【讨论】:

        【解决方案3】:

        当对受 .htaccess 文件影响的 URI 发出请求时,Apache 将在您的任何 PHP 代码执行之前处理所有重写规则。

        【讨论】:

          【解决方案4】:

          htaccess 由网络服务器控制。此文件将在您的 PHP 文件之前考虑在内。

          例如,您可以使用 htaccess 文件限制对特定文件夹的访问。所以,它必须在你的 PHP 之前负责。

          希望这会有所帮助。

          【讨论】:

            【解决方案5】:

            .htaccess 在 php 脚本执行之前由 Apache 执行。 (想象一下,如果执行了 php 脚本,然后 .htaccess 重定向到另一个页面......)。

            【讨论】:

              【解决方案6】:

              .htaccess 将首先启动。如果你看一下 Apache 的请求周期:

              PHP 是一个响应处理程序。 mod_rewrite 在 URI 转换时运行,除了在修复阶段运行的 .htaccess 和 块中的重写规则。这是因为 Apache 在 URI 转换之前不知道它在哪个目录(因此要读取哪个 或 .htaccess)。

              针对 gabriel1836 关于图片的问题,我从this presentation 的第二张幻灯片中抓取了它,但它最初来自本书:Writing Apache Modules in Perl and C,我强烈推荐。

              【讨论】:

              • 你能发一个图片链接吗?
              • 有趣的是,我没有意识到只有在响应发送后才发生日志记录。 +1 用于查找该图表。
              【解决方案7】:

              您始终可以使用以下命令对此进行测试:

              wget -S --spider http://yourdomain.com
              

              使用此命令,您可以看到谁在响应您的请求。

              正如所有其他人提到的,.htaccess 是第一位的。

              【讨论】:

                【解决方案8】:

                所以基本上.htaccess或多或少需要相关的PHP代码或文件,按照.htaccess中指定的规则,意味着.htaccess首先运行。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2013-02-25
                  • 1970-01-01
                  • 2019-06-05
                  • 1970-01-01
                  • 2019-10-06
                  • 1970-01-01
                  • 2019-03-11
                  • 2023-04-06
                  相关资源
                  最近更新 更多