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

使用.htaccess的RewriteRule实现URL重写遇问题求助

排查并修复你的URL重写配置问题

让我来帮你梳理下当前配置里的问题,以及如何修正:

原配置的核心问题

  1. 正则表达式未捕获目标参数:你最后的RewriteRule .$ https://www.example.com/post.php?idpost=$1 [L]里,正则.$没有用括号分组捕获任何内容,导致$1是空值,自然无法传递正确的idpost参数。
  2. 规则未匹配/article/前缀的路径:原规则会把所有非文件/非目录的请求都重写到post.php,这不符合你只针对/article/xxx路径的需求。
  3. 第一条规则意义不大:RewriteRule ^article/$ - [L]仅匹配/article/这个精确路径,对你要实现的/article/how-to-visit-italy-in-winter没有作用,反而可能在某些场景下干扰规则执行。

修正后的.htaccess配置

RewriteEngine On

# 排除真实存在的文件和目录(避免重写静态资源)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 匹配/article/xxx格式的URL,捕获xxx作为idpost参数
RewriteRule ^article/([^/]+)$ post.php?idpost=$1 [L]

配置说明

  • ^article/([^/]+)$:这个正则会匹配以/article/开头,后面跟着任意不含斜杠的字符(也就是你的文章标识)的路径,括号里的[^/]+会把文章标识捕获为$1。
  • post.php?idpost=$1:直接使用相对路径即可(如果你的.htaccess在网站根目录),把捕获到的$1作为idpost参数传递给原始脚本。
  • [L]标记表示这是最后一条规则,匹配后不再执行后续规则。

额外注意事项

  • 确保你的服务器已经启用了mod_rewrite模块(Apache默认通常是启用的,但如果没生效可以检查服务器配置)。
  • .htaccess文件要放在网站的根目录下,和post.php同一层级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:19:35