WAMP中配置/laravel子目录重定向至其public目录(无需.htaccess)
实现WAMP根目录显示文件夹列表,/laravel自动重定向到public的Apache虚拟主机配置方案
没问题,我来帮你搞定这个需求——不用.htaccess,纯靠Apache的虚拟主机配置就能实现。下面是一步步的具体操作:
1. 确保必要的Apache模块开启
首先得确保Apache的重写模块(rewrite_module)已经启用:
- 右键点击WAMP托盘图标,选择
Apache->Apache Modules - 找到
rewrite_module并勾选上,这是实现URL重定向的核心模块
2. 找到并编辑虚拟主机配置文件
WAMP的虚拟主机配置文件默认在这个路径(替换X.X.X为你的Apache版本号):
C:\wamp64\bin\apache\apacheX.X.X\conf\extra\httpd-vhosts.conf
另外,还要确保主配置文件httpd.conf里已经开启了虚拟主机配置:打开httpd.conf,找到下面这行,去掉开头的#注释:
#Include conf/extra/httpd-vhosts.conf
改成:
Include conf/extra/httpd-vhosts.conf
3. 配置虚拟主机规则
在httpd-vhosts.conf里添加(或修改)针对localhost的虚拟主机配置,把下面的路径替换成你实际的WAMP www目录路径:
<VirtualHost *:80> ServerName localhost DocumentRoot "C:/wamp64/www" # 替换为你的WAMP www实际路径 # 配置根目录:允许显示文件夹列表 <Directory "C:/wamp64/www"> Options Indexes FollowSymLinks MultiViews AllowOverride None # 禁用.htaccess,符合你的需求 Require all granted </Directory> # 配置/laravel路径的重定向规则 <Directory "C:/wamp64/www/laravel"> RewriteEngine On # 规则:如果访问的不是public目录,且请求的文件/目录不存在,就重定向到public RewriteCond %{REQUEST_URI} !^/laravel/public/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /laravel/public/$1 [L,R=301] </Directory> # 配置Laravel public目录的权限和路由规则 <Directory "C:/wamp64/www/laravel/public"> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted # 这里复制Laravel public目录下.htaccess的核心路由规则 RewriteEngine On RewriteRule ^(.*)$ index.php/$1 [L] </Directory> </VirtualHost>
规则说明:
- 根目录的
Directory块里的Indexes选项,确保访问http://localhost时会显示www目录下的文件夹列表 /laravel目录的重写规则:会自动把所有非public路径的请求,重定向到对应的/laravel/public路径下,无论是访问/laravel还是/laravel/xxx都能生效R=301是永久重定向,有利于SEO,如果你只是临时测试,可以改成R=302临时重定向
4. 重启Apache服务
配置完成后,右键点击WAMP托盘图标,选择Restart All Services,让配置生效。
测试验证
- 访问
http://localhost:应该能正常显示www目录下的所有子文件夹列表 - 访问
http://localhost/laravel:会自动跳转到http://localhost/laravel/public,并且Laravel项目能正常运行
内容的提问来源于stack exchange,提问作者ArchBacon
相关产品推荐
相关产品推荐

