【问题标题】:Strip directory from url and redirect to subdomain从 url 中剥离目录并重定向到子域
【发布时间】:2016-02-14 11:47:52
【问题描述】:

简介 我发现了一些非常相似的问题,但我不太相信我能够正确应用它们,因为我仍然觉得 htaccess 很难理解。就这样吧:

目标 我有一个多语言网站,其 URL 如下:

http://www.mywebsite.com/nl/some-article

我移到了一个新的 URL 结构,如下所示:

http://nl.mywebsite.com/some-article

换句话说,我需要从 url 中删除 /nl/,然后将剩余的 url 转发到带有 nl 前缀而不是 www 的域。 (这与我发现的保留原始目录的其他建议不同。)

后续问题:

由于去年发生的变化,我目前在 .htacccess 中有大约 500 个重定向:

重定向 301 /nl/oldcategory/some-title /nl/newcategory/some-title

重定向 301 /nl/oldcategory/some-title2 /nl/newcategory/some-title2

重定向 301 /nl/oldcategory/some-title3 /nl/newcategory/some-title3

我仍然需要其中一些重定向。除非我实施了上述问题的规则,否则它们将不再适用。基本上我需要处理 www.mywebsite.com/nl/oldcategory/some-title 的传入 url 请求,它应该被转发到 nl .mywebsite.com/newcategory/some-title.

我的想法是将这些额外的重定向(稍作修改)保留在子目录的 htaccess 中。那行得通吗?

例如:

重定向 301 /oldcategory/some-title /newcategory/some-title

【问题讨论】:

  • 您能否尝试更具体/简洁地回答您的问题?
  • 我不知道怎么做。我需要两个操作:1)从网址中删除 /nl/ 2)从 www 重定向到 nl 。我会尽力的:)。

标签: .htaccess redirect


【解决方案1】:

你可以在你的 .htaccess 文件中做这样的事情:

RewriteRule ^(nl)/(.*)$ http://$1.mywebsite.com/$2 [L,R=301]

【讨论】:

  • 谢谢:)。您能否将其修改为特定于“nl”?因为英语会变成 www :)。
  • 看起来不错。我会尽快测试它!我也可以将此应用于 en>www 吗? RewriteRule ^/(en)/(www)$ http://$1.mywebsite.com/$2 [L,R=301]
  • 你可以。尽管请记住,这是一个正则表达式,但您可以放置​​更复杂的模式。例如,您可以使用(nl|en) 匹配其中任何一个。
  • 今天我测试了最终的实现,但它不起作用。我已将规则改写为:RewriteRule ^(nl)/(.*)$ http://$1.pcinside.info/$2 [L,R=301] 所以基本上我所做的就是删除第一个 /。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 2014-04-10
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
相关资源
最近更新 更多