首先会发生什么? .htaccess或者php代码?
如果我使用mod_rewrite来控制我所有的301重定向,是否会在投放页面之前发生这种情况?因此,如果我在页面上运行的php脚本中也有很多重定向规则,.htaccess会首先启动吗?
解决方案
是的,在提供脚本之前,将先解析.htaccess文件。
.htaccess首先发生。
当请求受.htaccess文件影响的URI时,Apache将在执行任何PHP代码之前处理所有重写规则。
htaccess由网络服务器控制。在考虑PHP文件之前,将考虑此文件。
例如,我们可以使用htaccess文件限制对特定文件夹的访问。因此,必须在PHP之前负责。
希望这可以帮助。
.htaccess由Apache执行,然后执行php脚本。
(想象一下如果执行了php脚本,然后.htaccess重定向到另一个页面...)。
.htaccess将首先启动。如果我们查看Apache请求周期:
Apache请求周期http://stein.cshl.org/~lstein/talks/perl_conference/apache_api/requestcycle.gif
PHP是响应处理程序。 mod_rewrite以URI转换运行,除了.htaccess和<Directory>或者<Location>块中的重写规则(在修复阶段运行)。这是因为直到URI转换后,Apache才知道它在哪个目录中(因此也不知道要读取哪个<Directory>或者.htaccess)。
为了回应gabriel1836关于图像的问题,我从本演示文稿的第二张幻灯片中获取了该图像,但它最初来自于本书:我强烈建议使用Perl和C编写Apache模块。
我们始终可以使用以下命令进行测试:
wget -S --spider http://yourdomain.com
使用此命令,我们可以看到谁在响应请求。
正如所有其他提到的那样,.htaccess是第一位的。