如何正确编写.htaccess重写规则以实现指定URL格式?
修正.htaccess重写规则实现友好URL
你现有规则的问题在于第二条规则强制要求accounts后跟上数字(([0-9]+)),并且末尾带斜杠,这和你想要的localhost/mysite/admin/accounts不匹配。以下是正确的配置方案:
完整的.htaccess配置
将以下内容放在mysite根目录的.htaccess文件中(和admin文件夹同级):
RewriteEngine On # 避免重写真实存在的文件或目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 匹配 admin/accounts 或 admin/accounts/,转发到目标URL RewriteRule ^admin/accounts/?$ admin/index.php?page=accounts [L,QSA] # 处理admin根目录访问(可选,保留原逻辑) RewriteRule ^admin/?$ admin/index.php [L]
关键规则说明
^admin/accounts/?$:匹配admin/accounts和admin/accounts/两种访问形式,/?表示末尾斜杠可选[L]:标记为最后一条规则,匹配成功后停止后续规则处理[QSA]:保留原URL中的查询参数,比如admin/accounts?id=10会自动转为admin/index.php?page=accounts&id=10
额外注意事项
- 确保Apache服务器已开启
mod_rewrite模块 - 确认
.htaccess文件在mysite根目录拥有读写权限 - 你的
admin/index.php需要处理page参数,比如:
<?php if (isset($_GET['page']) && $_GET['page'] === 'accounts') { include 'accounts.php'; } // 其他页面逻辑 ?>
内容的提问来源于stack exchange,提问作者iamdonzkie
相关产品推荐
相关产品推荐

