在 htaccess 中重定向带有问号的链接

在 htaccess 中重定向带有问号的链接

我需要重定向:

example.com/wiki/?t=1234 

example.com/vb/showthread.php?t=1234

数字“1234”代表数百页不同的数字

我尝试在 .htaccess 中但没有作用:

RewriteCond %{QUERY_STRING} t=[0-9]
RewriteRule ^(.*)$ /vb/showthread.php?t=$1 [L]

答案1

RewriteCond %{QUERY_STRING} t=[0-9]
RewriteRule ^(.*)$ /vb/showthread.php?t=$1 [L]

这会匹配请求,但不会按预期重定向($1是对捕获组的反向引用RewriteRule 图案,而不是查询字符串)。这也是内部重写,而不是“重定向”——如上所述。

重定向 /wiki/?t=1234/vb/showthread.php?t=1234,其中1234是变量,那么您应该执行类似下面的操作:

RewriteCond %{QUERY_STRING} ^t=(\d+)
RewriteRule ^wiki/$ /vb/showthread.php?t=%1 [R=302,L]

这与 URL 路径/wiki/和查询字符串匹配,查询t=字符串以 1 个或多个数字开头。数字由正则表达式捕获(\d+)

反向引用%1(注意是%,而不是$)是对前一个捕获组的反向引用条件模式

请注意,这是一个 302(临时)重定向。但请不要更改它,除非您确定它正常工作。

相关内容