欢迎光临
我们一直在努力

伪静态与已存在本地文件冲突的优先级问题

建站超值云服务器,限时71元/月

今天调试网站时,遇到一个问题,因为新开发的M站是PHP的,使用了伪静态,而由于一些网页是静态的,因此产生了伪静态和本地文件冲突的问题,也就是一个优先级问题,例如把网站url伪静态成 /veryhuo/1234.html,而本地路径正好存在这个文件的话,Web服务器会优先访问伪静态,如果伪静态被判断404,则导致无法访问到本地文件。

伪静态与已存在本地文件冲突的优先级问题

经常一番研究,发现:添加2行规则可解决这个问题。

RewriteCond %{REQUEST_FILENAME} !-d
#上面的意思是不存在此目录时执行
RewriteCond %{REQUEST_FILENAME} !-f
#上面的意思是不存在此文件时执行

下面的是在.htaccess 中的应用,这2句应该在httpd.ini 中也适用

RewriteEngine On RewriteBase /
#将下面2行复制到你的规则前面
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php\?$1 [QSA,PT,L]

再说一下IIS7的解决方案:

注意上边的两条红色代码,就是解决这个问题的,按照上边逻辑规则,加入到web.config中即可。另外,您还可以在IIS7可视化工具,直接这样操作:

第一步,打开IIS管理器,找到对应站点,再点击【URL重写】,双击要操作规则,并点击【条件】,选【全部匹配】,【添加】条件

URL重写

第二步,如下图,在【条件输入】的位置,输入【{REQUEST_FILENAME}】,并下拉选择【检查输入字符串是否】,选择‘不是文件’和‘不是目录’(分两次添加)

{REQUEST_FILENAME}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 伪静态与已存在本地文件冲突的优先级问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址