在 phpstudy 中配置 apache 重写规则需三步:启用 mod_rewrite 模块、放开 .htaccess 权限(options +followsymlinks、allowoverride all、require all granted)、在网站根目录放置正确语法的 .htaccess 文件,缺一不可。

在 phpStudy 中为 Apache 站点配置重写规则,核心是让 PHP 项目支持友好的 URL(如 /user/123 而非 /index.php?u=123),关键不在写多少条规则,而在环境通、权限对、语法准。
确保 mod_rewrite 模块已启用
这是所有重写的前提,phpStudy 默认可能未开启:
- 打开 phpStudy 主界面 → 点击“设置” → 进入“Apache” → “模块管理”,勾选 rewrite_module 并保存
- 或手动编辑
phpstudy\apache\conf\httpd.conf,找到这一行:#LoadModule rewrite_module modules/mod_rewrite.so
删掉开头的#,保存 - 重启 Apache(phpStudy 界面点“重启”按钮即可)
允许目录级重写(.htaccess 生效)
phpStudy 的默认虚拟主机配置通常限制了 .htaccess 权限,需显式放开:
- 打开
phpstudy\apache\conf\extra\httpd-vhosts.conf - 找到你站点对应的
<virtualhost></virtualhost>块,在其内部找到或添加<directory></directory>区块 - 确认包含以下三行(缺一不可):
Options +FollowSymLinksAllowOverride AllRequire all granted
在网站根目录写好 .htaccess 规则
规则必须放在站点根目录(如 D:\www\myapp\),文件名严格为 .htaccess(注意开头的点):
- 最通用的框架入口转发(适用于 Laravel、ThinkPHP 等):
<ifmodule mod_rewrite.c><br>RewriteEngine On<br>RewriteBase /<br>RewriteCond %{REQUEST_FILENAME} !-f<br>RewriteCond %{REQUEST_FILENAME} !-d<br>RewriteRule ^(.*)$ index.php/$1 [L]<br></ifmodule> - 若部署在子目录(如
http://localhost/myapp/),把RewriteBase /改成RewriteBase /myapp/ - 简单伪静态示例(
/news/456→news.php?id=456):RewriteRule ^news/([0-9]+)$ /news.php?id=$1 [L,QSA,NC]
验证与排错要点
规则写完不等于生效,快速判断是否配置正确:
- 访问一个被重写的路径(如
/news/123),页面正常显示且浏览器地址栏没跳转 → 是内部重写,成功 - 如果返回 404 或 500 错误,检查 Apache 错误日志(
phpstudy\apache\logs\error_log),常见报错如:
“Invalid command 'RewriteEngine'” → 模块未启用
“RewriteRule: bad flag delimiters” → 方括号格式错误或空格缺失 - 用
phpinfo()页面确认 Loaded Modules 中含mod_rewrite,且 Directive 中AllowOverride显示为All
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











