以上完整路径可以正常跳转页面,而下面直接public/跳转页面失败。
这样访问不了是因为这样跳转url没有index.php入口文件,在没有url重写时,访问项目名/public/index.php/index/index/index可以直接 项目名/public访问 或**项目名/public/index.php/**或 **项目名/public/index.php/模块名/控制器/操作访问,这样必须要有index.php入口文件。**解决上面问题的方法就是重写url。
隐藏应用的入口文件index.php可以通过URL重写(也可以是其它的入口文件,但URL重写通常只能设置一个入口文件),相关服务器的配置参考如下:
- 把httpd.conf配置文件中的mod_rewrite.so前面的#号删除
- 把httpd.conf配置文件中的AllowOverride None 将None改为 All
- 把下面的内容保存为.htaccess文件放到应用入口文件的同级目录下,其中下面代码最后一句任选一个语句尝试即可:
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{ REQUEST_FILENAME} !-d RewriteCond %{ REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] //或 RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L] //或 RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] </IfModule>
或者
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine On
RewriteCond %{
REQUEST_FILENAME} !-d
RewriteCond %{
REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
以上只适用于apache服务器。
ngnix:
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}