首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.htaccess向URL添加子目录

使用.htaccess向URL添加子目录
EN

Webmasters Stack Exchange用户
提问于 2019-03-06 02:32:36
回答 1查看 898关注 0票数 1

我正努力做到以下几点:

这个网址:www.example.com/wis/9-3/1998/0.general

重定向到这个网址:www.example.com/9440/wis/9-3/1998/0.general

因此,我试图将这个子目录添加到目标URL:/9400/

另外,/0.general也会发生变化,因此需要从原始URL中获得。

这是我目前所拥有的,但它不起作用:

代码语言:javascript
运行
复制
RewriteRule ^/wis/9-3/1998/(.*)$ /9400/wis/9-3/1998/$1 [L]
EN

回答 1

Webmasters Stack Exchange用户

回答已采纳

发布于 2019-03-06 12:00:33

RewriteRule ^/wis/9-3/1998/(.*)$ /9400/wis/9-3/1998/1

这在目录(或.htaccess)上下文中不起作用,因为RewriteRule模式上有斜杠前缀。在.htaccess中,只有部分URL路径匹配,特别是不以斜杠开头。因此,这应该写成:

代码语言:javascript
运行
复制
RewriteRule ^wis/9-3/1998/(.*) /9400/wis/9-3/1998/$1 [L]

(由于regex默认是贪婪的,所以结束$是多余的。)

还请注意,这是一个内部重写,而不是外部“重定向”,正如您在您的问题中所说的。(尽管内部重写很可能是您所需要的?)

请注意,@dan在上面的评论。一般来说,正则表达式应该尽可能具体。

您还可以“简化”上面的指令,以避免重复:

代码语言:javascript
运行
复制
RewriteRule ^(wis/9-3/1998/.*) /9400/$1 [L]

更新#1:在我的htaccess中有一些默认的wordpress表达式

如果这是WordPress,您就不能在.htaccess中执行这种类型的内部重写--因为WordPress路由URL的方式(它查看请求的URL,到重写的URL)。

但是,您可以使用外部重定向(即。URL更改)。在这种情况下,这应该放在.htaccess文件的顶部,在WordPress前端控制器之前:

代码语言:javascript
运行
复制
RewriteRule ^(wis/9-3/1998/.*) /9400/$1 [R,L]

注意添加了R标志。(这是临时302重定向。)

更新#2:是否有方法包括1998年所在的范围。假设从1998年到2005年

Regex不太适合做“范围”,但是,由于您的范围相当有限,您可以使用替换,并包括每一个可能的值: 1998、1999、2000等:

代码语言:javascript
运行
复制
RewriteRule ^(wis/9-3/(?:1998|1999|2000|2001|2003|2003|2004|2005)/.*) /9400/$1 [R,L]
票数 2
EN
页面原文内容由Webmasters Stack Exchange提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://webmasters.stackexchange.com/questions/121405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档