您可以在中执行以下操作.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]