You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移除URL目录名:WordPress与Laravel6路由配置异常问题

解决Laravel路由URL移除laravel目录的问题

首先明确:不需要修改httpd.conf,你的问题出在规则的放置位置和写法上。咱们一步步来修复:

问题分析

你把重写规则放在了laravel/.htaccess里,但请求首先会经过根目录的.htaccess(因为虚拟主机的DocumentRoot指向my_site/)。而且你写的RewriteRule ^laravel/(.*)$ /$1 [L,NC,R]是外部重定向,不是内部转发,这会导致请求被跳转到根目录,但根目录没有Laravel的入口文件,自然触发404错误。

正确的配置步骤

1. 调整根目录的.htaccess

在根.htaccess中,先添加Laravel的转发规则,再保留WordPress的规则(确保Laravel的请求先被处理,不会被WP接管)。示例如下:

# 开启重写引擎
RewriteEngine On
RewriteBase /

# 排除wp目录和Laravel自身目录的请求,避免循环
RewriteCond %{REQUEST_URI} !^/wp/
RewriteCond %{REQUEST_URI} !^/laravel/
# 把非WP的请求转发到laravel目录(如果你的Laravel入口在public子目录,要改成laravel/public/$1)
RewriteRule ^(.*)$ laravel/$1 [L]

# 下面保留你原来的WordPress规则(用于移除wp目录的配置)
# 示例WP规则(根据你之前的实际配置调整)
RewriteCond %{REQUEST_URI} !^/wp/
RewriteRule ^(.*)$ wp/$1 [L]

注意:如果你的Laravel是标准结构(入口文件在laravel/public/),请把上面的RewriteRule目标改成laravel/public/$1,同时确保laravel/public/.htaccess是Laravel默认配置。

2. 修正laravel/.htaccess

删掉你之前添加的重定向规则,换成Laravel默认的路由处理规则,用于将非静态资源请求转发到入口文件:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /laravel/

# 如果请求的是存在的文件或目录,直接返回
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# 否则将请求转发到index.php处理路由
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

若Laravel入口在public目录,这个配置应该放在laravel/public/.htaccess中,laravel/根目录的.htaccess可以删除或改为转发到public目录。

验证逻辑

当用户访问subdomain.local:777/login时:

  1. 根.htaccess捕获请求,内部转发到laravel/login
  2. laravel/.htaccess检查到login不是文件/目录,转发到laravel/index.php处理Laravel路由
  3. 正常返回Laravel的登录页面

而访问subdomain.local:777时,会被WP的规则处理,返回着陆页,两者互不干扰。

内容的提问来源于stack exchange,提问作者PHP Ferrari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 07:49:08