运行laravel项目时,取消请求路径上的/index.php

在 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 正常访问页面或请求了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容