http://localhost/frontend_dev.php/1
为什么上述请求被重定向到frontend_dev.php
而不是index.php
?
我读过.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
# uncomment the following line, if you are having trouble
# getting no_script_name to work
#RewriteBase /
# we skip all files with .something
#RewriteCond %{REQUEST_URI} \..+$
#RewriteCond %{REQUEST_URI} !\.html$
#RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
如果我理解正确,如果请求的文件不存在,则应将其重定向到index.php
,在上述情况下如何运行frontend_dev.php
?
答案 0 :(得分:6)
您已指定http://localhost/frontend_dev.php/1作为URL - Apache只是提供frontend_dev.php
,因为您明确要求在URL中提供该文件。将您的网址更改为http://localhost/index.php/1以查看生产控制器。
重写规则只对 处理完全没有提到前端控制器的URL,即。 http://localhost/1 - 对于您最初提供的URL,根本没有解析重写规则,因为Apache检测到了frontend_dev.php文件,并且没有找到匹配的重写规则来解析。
答案 1 :(得分:2)
简单。由于frontend_dev.php
确实存在,因此执行了 。并且不会执行重定向。