您可以在中执行以下操作.htaccess 在现有WordPress指令之前。
RewriteCond %{QUERY_STRING} ^uri=(/[^&]+)
RewriteRule ^nextgen-share/(\\d+/\\d+)/full$ %1#gallery/$1 [QSD,NE,R,L]
The
RewriteRule 模式仅与URL路径匹配,因此需要前面的RewriteCond 指令,以匹配URL的查询字符串部分。如果/121212/8989/ 部分总是由6位和4位组成,那么您可以在正则表达式中进行更严格的限制。ie。(\\d{6}/\\d{4}). 同样,如果uri 参数值由有限的字符子集(可能是单个路径段)组成,然后这可以变得更加严格。
%1 是对前面中捕获的子模式的反向引用RewriteCond 指令,即uri URL参数。
$1 是对中捕获的组的反向引用RewriteRule 图案,例如。121212/8989 在您的示例URL中。
这个NE (noescape) 需要标记以防止# 在响应中进行URL编码(并被视为URL路径的一部分)。
这个QSD (查询字符串丢弃)标志(Apache 2.4+)是从重定向URL中删除查询字符串所必需的,否则请求URL中的查询字符串将按原样复制到替换的末尾。如果您仍然使用Apache 2.2,那么可以附加? 而是添加到替换的末尾(本质上是附加一个空查询字符串)。
这是一个临时(302)重定向。
UPDATE: 这只在121212时有效,但如果它是字母数字(abc121212)怎么办
要允许a-z(小写)和数字,则需要修改RewriteRule 图案到^nextgen-share/([0-9a-z]+/[0-9a-z]+)/full$. 如果还需要允许大写字母,请更改[0-9a-z] 到[0-9a-zA-Z]. 您也可以使用\\w 此处改为“word characters”速记字符类,与[0-9a-zA-Z_] - 注意额外的_ (下划线)。
因此,这变成:
RewriteCond %{QUERY_STRING} ^uri=(/[^&]+)
RewriteRule ^nextgen-share/(\\w+/\\w+)/full$ %1#gallery/$1 [QSD,NE,R,L]