TP5,TP5.1项目本地是正常的,放在主机环境下就不行了,虚拟主机里IIS环境下后其他页面无法访问,404,样式静态资源无法访问加载问题;
项目说明:我的项目网站的框架使用的是tp5.1,使用的是xxx的虚拟主机,因为他们虚拟主机供应商那边最近迁移了机房,主机啥的都换了. 现在新的服务器环境好像是IIS, 网站的根目录wwwroot下有一个web.config配置文件; 就是在这里面配置伪静态规则 ;
第一步
1.首先检查一下虚拟主机运行的php版本号 !!!
大家使用过tp框架的都知道,tp的默认根目录是public下, 而我现在的根目录下是wwwroot下所以肯定没法使用, 大家如果直接将tp项目放在你的根目录下访问的话,访问首页的话是没有办法访问的(好像是拒绝访问之类的报错), 那这时打开tp5.1手册地址传送门:https://www.php.cn/manual/view/32825.html , 在更改应用目录和入口位置里面介绍了改变加载入口文件的办法. 那就是把public下的index.php文件 复制一份到wwwroot下并更改里面的路径(一定要照着文档中说的做偶)下面我再贴上代码 直接复制到wwwroot下index.php文件就行了,注意的是定义应用目录时要和你的项目’application’ 对应上, 我的是application
<?php
namespace think;
// 定义应用目录
define('APP_PATH', __DIR__ . '/application/');
// 加载框架基础引导文件
require __DIR__ . '/thinkphp/base.php';
// 执行应用并响应
Container::get('app', [APP_PATH])->run()->send();
第二步 改完入口文件后接着再配置伪静态规则了,找到wwwroot下web.config文件,大家要注意的是 服务器环境的不同伪静态规则也是不一样的IIS环境的伪静态规则代码如下(其实我也不懂伪静态规则,只是懂一些正则,大致能知道关键处); 复制下面的规则到你的web.config下后应该就可以访问你的网站了
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="OrgPage" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(.*)$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
对没错这个规则和大家百度到其他博客都是一样的; <action type="Rewrite" url="index.php/{R:1}" />
这个部分我的理解是这样的(这个大家可以信也可以不信不影响下面操作,如果不对还请大家指出,不胜感激) 这个部分就是重新指向了网站的根目录index.php文件; 这时大家返回打开网站应该就可以访问你的首页了,大家的首页的如果可以访问,但是页面错乱的情况下是正常的,因为你们在本地时指定的public下,那你们的静态资源路径应该是 /static/…之类的 但是现在配置了伪静态规则后,根目录是在wwwroot下了所以可能要改变你的静态资源路径/public/static/…这样之后应该你的网站就可以恢复正常了
如果我说的有错的话 希望大家可以指出,因为我对伪静态规则这问题也不是明白,我只是将我遇到的问题并解决了的办法放在这里和大家分享,如果有错的地方大家可以指出