我正努力做到以下几点:
这个网址:www.example.com/wis/9-3/1998/0.general
重定向到这个网址:www.example.com/9440/wis/9-3/1998/0.general
因此,我试图将这个子目录添加到目标URL:/9400/
另外,/0.general
也会发生变化,因此需要从原始URL中获得。
这是我目前所拥有的,但它不起作用:
RewriteRule ^/wis/9-3/1998/(.*)$ /9400/wis/9-3/1998/$1 [L]
发布于 2019-03-06 12:00:33
RewriteRule ^/wis/9-3/1998/(.*)$ /9400/wis/9-3/1998/1
这在目录(或.htaccess
)上下文中不起作用,因为RewriteRule
模式上有斜杠前缀。在.htaccess
中,只有部分URL路径匹配,特别是不以斜杠开头。因此,这应该写成:
RewriteRule ^wis/9-3/1998/(.*) /9400/wis/9-3/1998/$1 [L]
(由于regex默认是贪婪的,所以结束$
是多余的。)
还请注意,这是一个内部重写,而不是外部“重定向”,正如您在您的问题中所说的。(尽管内部重写很可能是您所需要的?)
请注意,@dan在上面的评论。一般来说,正则表达式应该尽可能具体。
您还可以“简化”上面的指令,以避免重复:
RewriteRule ^(wis/9-3/1998/.*) /9400/$1 [L]
更新#1:在我的htaccess中有一些默认的wordpress表达式
如果这是WordPress,您就不能在.htaccess
中执行这种类型的内部重写--因为WordPress路由URL的方式(它查看请求的URL,到重写的URL)。
但是,您可以使用外部重定向(即。URL更改)。在这种情况下,这应该放在.htaccess
文件的顶部,在WordPress前端控制器之前:
RewriteRule ^(wis/9-3/1998/.*) /9400/$1 [R,L]
注意添加了R
标志。(这是临时302重定向。)
更新#2:是否有方法包括1998年所在的范围。假设从1998年到2005年
Regex不太适合做“范围”,但是,由于您的范围相当有限,您可以使用替换,并包括每一个可能的值: 1998、1999、2000等:
RewriteRule ^(wis/9-3/(?:1998|1999|2000|2001|2003|2003|2004|2005)/.*) /9400/$1 [R,L]
https://webmasters.stackexchange.com/questions/121405
复制相似问题