如果我使用mod_rewrite来控制所有301重定向,那么在我的页面被提供之前是否会发生这种情况?所以如果我在我的页面上运行的php脚本中也有一堆重定向规则,那么.htaccess会先启动吗?
答案 0 :(得分:43)
.htaccess将首先开始。如果你看一下Apache请求周期:
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
首先运行。