在 Windows 系统中,若要实现使用 Apache 运行 Laravel 项目时不添加 /index.php
也能正常访问对应页面或请求,主要步骤和 Linux 类似,也需要开启重写模块、修改 Apache 配置文件以及确保 .htaccess
文件配置正确,以下是详细步骤:
1. 开启 Apache 的重写模块
- 找到 Apache 安装目录下的
conf/httpd.conf
文件,通常默认安装路径为C:\Apache24
。 - 使用文本编辑器(如记事本、Notepad++ 等)打开
httpd.conf
文件。 - 在文件中找到如下行(可能被注释掉,即行首有
#
):
#LoadModule rewrite_module modules/mod_rewrite.so
- 去掉行首的
#
,将其修改为:
LoadModule rewrite_module modules/mod_rewrite.so
- 保存
httpd.conf
文件。
2. 修改 Apache 配置以允许 .htaccess
覆盖规则
- 同样在
httpd.conf
文件中,找到类似如下的配置段,通常是针对网站根目录的配置:
<Directory "C:/Apache24/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- 将
AllowOverride None
修改为AllowOverride All
,这样 Apache 就会读取并应用.htaccess
文件中的规则:
<Directory "C:/Apache24/htdocs">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
注意:这里的 "C:/Apache24/htdocs"
需要替换为你实际 Laravel 项目的 public
目录路径,例如 D:/Projects/your-laravel-project/public
。
- 保存
httpd.conf
文件。
3. 重启 Apache 服务
- 打开“服务”窗口(可以通过在开始菜单搜索“服务”来找到)。
- 在服务列表中找到“Apache2.4”(具体名称可能因安装情况略有不同)。
- 右键点击该服务,选择“停止”,待服务停止后,再右键点击选择“启动”,使配置修改生效。
4. 确保 Laravel 项目中的 .htaccess
文件配置正确
- 在 Laravel 项目的
public
目录下,通常已经有.htaccess
文件,其内容大致如下:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
- 若该文件不存在,可以手动创建并将上述内容复制进去。这个文件的规则会把所有非文件和非目录的请求重定向到
index.php
。
5. 检查 Laravel 的 APP_URL
配置
- 打开 Laravel 项目根目录下的
.env
文件。 - 确保
APP_URL
配置正确,例如:
APP_URL=http://localhost
如果使用了自定义域名或者端口,要相应地修改为正确的值,如 APP_URL=http://yourdomain.com:8080
。
完成以上操作后,再次访问 Laravel 项目,就可以不添加 /index.php
正常访问页面或请求了。