疑难杂症
Posted 风中凌乱的猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了疑难杂症相关的知识,希望对你有一定的参考价值。
1、apache虚拟目录部署多个站点问题
在使用apache的虚拟目录部署多个站点时遇到一个问题:生成url的时候会将文件目录一起解析出来,这就导致路由错误(tp框架)
问题:解析的时候将文件目录解析出来了,tp框架就把文件目录当做了路由去解析
apache虚拟目录的设置方法:
//主目录 DocumentRoot "F:\\project\\image_annotation\\public" <Directory /> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> //虚拟目录 Alias /wheel "F:\\project\\wheel-tp5+layui\\public" <Directory "F:\\project\\wheel-tp5+layui\\public"> Options +Indexes +FollowSymLinks +ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory>
问题解决办法:修改url重写规则
问题的根本在于进行了index.php隐藏的重写规则,首先得理解phpstudy默认的重写规则的含义,
<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] </IfModule>
1、排除一些条件,必须两个条件都满足后才重定向到index.php
//如果你访问的文件不等于目录
RewriteCond %{REQUEST_FILENAME} !-d
//如果你访问不是文件,比如你可能访问的JPEG等图片文件
RewriteCond %{REQUEST_FILENAME} !-f
2、^(.*)$
匹配所有的路径映射到入口文件 index.php/$1
3、标签 [QSA,PT,L]
QSA:表示保留参数如get传值?xxx==xx...; PT:再把这个URL交给Apache处理;L:作为最后一条;
PT和L可加可不加。
意思就是说匹配所有的路径映射到入口文件index,php去处理,所以当存在虚拟目录时,入口文件应该是 /虚拟目录/index
所以,解决办法:
<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] RewriteRule ^(.*)$ /wheel/index.php [L,E=PATH_INFO:$1] </IfModule>
以上是关于疑难杂症的主要内容,如果未能解决你的问题,请参考以下文章