如何通过.htaccess重写规则移除URL多子目录并实现指定URL改写
URL重写实现方案及.htaccess部署说明
这个需求完全可行,借助Apache的mod_rewrite模块就能实现这种URL重写(伪静态)效果,前提是你的服务器已经启用了该模块。
.htaccess文件放置位置
必须放在store目录下,这样规则只会针对该目录生效,避免干扰服务器上的其他站点或目录。如果放在服务器根目录也能实现,但针对性不强,容易引发不必要的规则冲突。
具体重写规则
在store目录下新建.htaccess文件,写入以下内容:
RewriteEngine On RewriteBase /store/ # 把/store/XXX转发到指定的PHP文件并传递name参数 RewriteRule ^([^/]+)$ admin/employee/position/cashier.php?name=$1 [L,QSA]
规则说明
RewriteEngine On:开启URL重写引擎RewriteBase /store/:指定重写的基础路径,确保规则基于store目录生效^([^/]+)$:匹配store目录下的单个路径段(比如John),并将其捕获为变量$1[L,QSA]:L表示当前规则是最后执行的规则;QSA表示如果原URL带有其他参数(比如/store/John?age=30),会自动附加到目标URL的参数中,最终转发为cashier.php?name=John&age=30
注意事项
- 确认Apache配置文件中已经启用mod_rewrite模块,通常需要确保
LoadModule rewrite_module modules/mod_rewrite.so这一行没有被注释 - 确保
store目录的Apache配置中AllowOverride设置为All,否则.htaccess文件的规则不会生效,示例配置如下:
<Directory "/服务器上store目录的绝对路径"> AllowOverride All </Directory>
内容的提问来源于stack exchange,提问作者Chea ChiOuy
相关产品推荐
相关产品推荐

