先发生什么事? .htaccess或php代码?

时间:2008-10-01 16:08:53

标签: php apache .htaccess mod-rewrite

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

8 个答案:

答案 0 :(得分:43)

.htaccess将首先开始。如果你看一下Apache请求周期:

Apache Request Cycle

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

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

答案 1 :(得分:20)

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

答案 2 :(得分:8)

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

答案 3 :(得分:4)

.htaccess首先发生。

答案 4 :(得分:3)

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

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

希望这有帮助。

答案 5 :(得分:3)

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

答案 6 :(得分:1)

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

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

使用此命令,您可以看到谁正在回复您的请求。

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

答案 7 :(得分:0)

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