疑难杂症

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>

 

  

 

  

转载于:https://www.cnblogs.com/huqi21st/p/7474487.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值