Mac自带Apache服务器下.htaccess文件不生效问题求助
问题排查与解决步骤
1. 修正.htaccess规则中的语法错误
你的.htaccess存在两处关键问题:
- 重复添加了
RewriteCond %{REQUEST_FILENAME} !-f规则,删除多余的一条即可 RewriteRule指令里index.php和[L]标记之间缺少空格,导致规则无法被Apache正确解析
修正后的.htaccess内容:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L]
2. 确认入口文件命名正确
你提到的~/Sites/test/php.index应为笔误,正常的入口文件名应为index.php,请确保文件名修改为index.php,否则规则无法定位到目标文件。
3. 开启Apache的mod_rewrite模块
Mac自带Apache默认未启用mod_rewrite,执行以下命令开启:
sudo apachectl enable rewrite
执行后重启Apache:
sudo apachectl restart
4. 配置Apache允许.htaccess生效
需要确保~/Sites目录对应的Apache配置开启了AllowOverride All,否则.htaccess文件不会生效:
- 打开用户站点配置文件:
sudo nano /etc/apache2/users/你的用户名.conf
- 修改目录配置块,确保包含
AllowOverride All:
<Directory "/Users/你的用户名/Sites/"> Options Indexes MultiViews FollowSymLinks AllowOverride All Require all granted </Directory>
- 保存配置后重启Apache:
sudo apachectl restart
完成以上操作后,访问localhost/test/foo即可正常跳转到index.php并输出内容。
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

