我正在我的WordPress网站上使用NextGEN Gallery Pro-Lightbox的社交共享功能,它实际上是在社交媒体上创建并共享临时创建的url(第一个url)。不知何故,重定向不起作用,当我访问第一个url时会生成一个空白页面。我正在考虑添加一个手动htaccess重写规则,或者最好是WordPress函数来实现这种重定向。
如何在中添加这样的重写规则.htaccess
或者WordPress钩子将第一个url重定向到第二个url?
重定向第一个url:
example.com/nextgen-share/121212/8989/full?uri=/landscape-photography/
至
第二个url:
example.com/landscape-photography/#gallery/121212/8989
我试过几本手册
.htaccess
重写规则,但没有乐趣。任何意见都将不胜感激。
最合适的回答,由SO网友:MrWhite 整理而成
您可以在中执行以下操作.htaccess
在现有WordPress指令之前。
RewriteCond %{QUERY_STRING} ^uri=(/[^&]+)
RewriteRule ^nextgen-share/(\\d+/\\d+)/full$ %1#gallery/$1 [QSD,NE,R,L]
TheRewriteRule
模式仅与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]