MediaWiki扩展URL参数优化:将dbid参数转为斜杠形式
解决MediaWiki扩展URL重写:用斜杠替代dbid参数
我来帮你搞定这个MediaWiki的URL重写需求!你想要把/w/Page?dbid=1234这种带查询参数的URL改成更友好的/w/Page/1234格式,之前的规则因为匹配范围太广容易出错,下面给你一套精准可行的方案:
最终.htaccess配置(放在/w/目录下)
RewriteEngine On # 优先匹配带dbid的URL格式:/w/页面标题/数字dbid # 这里限定dbid为数字,如果你的dbid包含字母/下划线,把[0-9]+改成[a-zA-Z0-9_]+ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)/([0-9]+)$ index.php?title=$1&dbid=$2 [L,QSA] # 处理普通页面URL:/w/普通页面标题 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)$ index.php?title=$1 [L,QSA]
关键细节解释
- 精准匹配避免冲突:第一条规则用
^([^/]+)/([0-9]+)$只匹配「单斜杠分隔、第二段是数字」的路径,这样不会误把本身带斜杠的MediaWiki页面标题(比如Help/Contents)拆成title=Help&dbid=Contents,完美区分普通页面和触发扩展的页面。 - 保留额外参数:
[QSA]标志非常重要,它会自动保留URL中其他的查询参数(比如/w/Page/1234?action=edit会被正确转译为index.php?title=Page&dbid=1234&action=edit),兼容MediaWiki的各种操作参数。 - 规则顺序:一定要把带dbid的规则放在普通页面规则前面,因为Rewrite规则是从上到下匹配的,优先处理特殊格式的URL。
额外注意事项
- 确认MediaWiki的配置:确保
LocalSettings.php中的$wgScriptPath = "/w";设置正确,对应你的安装目录。 - 与现有规则整合:如果你的MediaWiki已经配置了默认的友好URL规则,把这套规则放在默认规则的前面,避免被覆盖。
- 调试测试:可以直接访问
/w/你的页面/1234,查看是否正确触发扩展;如果有问题,可以检查服务器是否开启了Rewrite模块(Apache需要mod_rewrite启用)。
内容的提问来源于stack exchange,提问作者user3103115
相关产品推荐
相关产品推荐

