部署Laravel项目时显示IIS默认页面的原因及解决方法
问题原因及解决办法
可能原因
- IIS默认站点的物理路径未指向Laravel项目的
public目录 - 未配置URL重写规则,Laravel依赖该规则处理路由请求
- IIS应用池对项目目录无读写权限
- 站点绑定设置冲突(如端口、主机头被其他站点占用)
解决步骤
1. 修正站点物理路径
打开IIS管理器,找到默认站点:
- 右键站点 → 管理网站 → 高级设置
- 将物理路径修改为你的Laravel项目下的
public文件夹路径(例如C:\laravel-project\public) - 保存设置后重启站点
2. 配置URL重写规则
Laravel需要URL重写让所有请求指向public/index.php:
- 确保已安装IIS的URL重写模块(可通过Web平台安装器下载)
- 在项目
public目录下创建web.config文件,写入以下内容:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Laravel" stopProcessing="true"> <match url="^(.*)$" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <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}" appendQueryString="true" /> </rule> </rules> </rewrite> <defaultDocument> <files> <clear /> <add value="index.php" /> </files> </defaultDocument> </system.webServer> </configuration>
3. 设置目录权限
- 右键Laravel项目根目录 → 属性 → 安全
- 添加IIS应用池对应的用户(通常为
IIS_IUSRS或AppPool\{你的应用池名称}) - 为该用户分配读取和写入权限,应用后重启IIS
4. 检查站点绑定
- 确认默认站点绑定的端口(通常为80)未被其他站点占用
- 若有冲突,可创建新站点,绑定对应端口,物理路径指向项目
public目录
附用户提供的相关截图
- 访问时显示的IIS默认页面:

- 项目文件路径:

内容的提问来源于stack exchange,提问作者Fabrizio
相关产品推荐
相关产品推荐

