XAMPP本地环境.htaccess重定向失效,请求404问题求助
解决XAMPP下.htaccess重写导致的404错误(Windows 10环境)
你的核心问题是**.htaccess中的RewriteRule路径指向错误**:你的.htaccess和index.php都在public文件夹下,原规则里的/index.php是网站根目录(XAMPP的htdocs)的绝对路径,服务器找不到该位置的index.php,因此触发404。以下是针对性解决方案:
1. 修正.htaccess的重写规则
将原规则中的绝对路径改为相对路径,确保指向当前public目录下的index.php:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [NC,L,QSA]
如果public是网站根目录的子文件夹(比如htdocs/your-project/public),也可以用绝对路径明确指定:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /your-project/public/index.php [NC,L,QSA]
2. 确认Apache目录权限配置
打开XAMPP的Apache配置文件(httpd.conf),找到对应项目public目录的<Directory>块,确保AllowOverride All已正确设置:
<Directory "C:/xampp/htdocs/your-project/public"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory>
修改后必须重启Apache服务才能生效。
3. 验证basePath函数的正确性
确保你的basePath函数能正确拼接控制器文件路径,示例如下:
function basePath($path) { // __DIR__ 代表index.php所在的public目录 return __DIR__ . '/' . $path; }
错误的路径拼接会导致控制器文件无法加载,间接触发404。
4. 确认Rewrite模块已启用
再次检查httpd.conf中Rewrite模块的加载行是否未被注释:
LoadModule rewrite_module modules/mod_rewrite.so
若开头有#注释符,去掉后重启Apache。
5. 测试路由访问
- 未配置虚拟主机时,访问路径应为
http://localhost/your-project/listings - 已配置虚拟主机并将根目录指向
public时,直接访问http://your-local-domain.test/listings
你之前修改RewriteRule出现500错误,说明重写规则已生效,只是路径错误导致服务器无法找到目标文件,修正路径后即可解决问题。
内容的提问来源于stack exchange,提问作者Princess Tonayon
相关产品推荐
相关产品推荐

