You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过.htaccess限制RewriteRule仅作用于当前目录?

实现website.com/tags/动态URL的.htaccess完整配置

老哥,你找的方向完全对!用Apache的.htaccess确实能搞定这种tags下的动态URL路由。我把你没写完的配置补全,再给你掰扯清楚每部分的作用,保证你能直接用:

RewriteEngine On
# 跳过真实存在的文件和目录,防止静态资源(比如图片、CSS)被错误重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 匹配tags/后的动态路径,传递给index.php的t参数
RewriteRule ^tags/(.*)$ index.php?t=$1 [QSA,L]

规则拆解说明:

  • RewriteEngine On:必须开启的重写引擎开关,没有它所有规则都无效
  • RewriteCond %{REQUEST_FILENAME} !-f:如果用户请求的是真实存在的文件(比如tags/logo.png),就跳过这条重写规则,保证静态资源正常访问
  • RewriteCond %{REQUEST_FILENAME} !-d:同理,如果请求的是真实存在的目录,也跳过规则
  • RewriteRule ^tags/(.*)$ index.php?t=$1 [QSA,L]:
    • ^tags/(.*)$:精准匹配以tags/开头的URL,(.*)会把tags/后面的所有内容(比如my-dinamic-url、another-example)都捕获下来
    • index.php?t=$1:把捕获到的动态内容作为t参数传递给根目录的index.php,这样你就能在PHP里用$_GET['t']拿到这个动态值了
    • [QSA]:保留原URL里的查询字符串,比如用户访问website.com/tags/my-tag?foo=bar,会自动转成index.php?t=my-tag&foo=bar
    • [L]:标记这是最后一条规则,匹配成功后就不再处理后面的其他规则,避免冲突

额外注意事项:

  • 确保你的Apache服务器已经开启了mod_rewrite模块,要是没开的话得先在服务器配置里启用它
  • 这个.htaccess文件要放在网站的根目录下(和你的tags文件夹同级的位置)
  • 如果你的index.php不在根目录,记得调整规则里的路径,比如在public文件夹下的话就写成public/index.php?t=$1

内容的提问来源于stack exchange,提问作者wrkman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:11:45