10

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

4

8 回答 8

43

.htaccess 将首先启动。如果您查看 Apache 请求周期:

Apache 请求周期

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

为了回答 gabriel1836 关于图像的问题,我从本演示文稿的第二张幻灯片中截取了它,但它最初来自我强烈推荐的《用 Perl 和 C 编写 Apache 模块》一书。

于 2008-10-01T16:14:15.137 回答
21

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

于 2008-10-01T16:11:43.567 回答
9

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

于 2008-10-01T16:11:01.413 回答
4

.htaccess 首先发生。

于 2008-10-01T16:11:10.977 回答
3

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

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

希望这可以帮助。

于 2008-10-01T16:12:45.513 回答
3

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

于 2008-10-01T16:13:27.447 回答
1

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

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

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

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

于 2010-01-19T18:23:50.747 回答
0

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

于 2012-09-24T22:10:53.923 回答