【问题标题】:redirect url from htaccess file从 htaccess 文件重定向 url
【发布时间】:2022-01-02 14:51:49
【问题描述】:

我正在尝试像这样批量重定向我的站点链接,我需要从每个链接中删除主页并将其重定向到根目录,如下所示。

example.com/home/hello-world. 
example.com/home/tag/world.

example.com/hello-world
example.com/tag/world.

我正在使用这些代码

RewriteEngine On
RewriteCond %{REQUEST_URI} (.+)/home(.*)$
RewriteRule ^ %1/ [R=301,L]

【问题讨论】:

  • 您在“一些”示例 URL 的末尾有一个点 - 这很重要吗?

标签: .htaccess url redirect mod-rewrite http-status-code-301


【解决方案1】:

考虑到您的 htaccess 规则文件除了显示的规则之外还有更多规则,这些规则将负责处理来自后端的页面(重写),如果是这种情况,请尝试遵循 htaccess 规则文件。

请将这些规则放在您的 htaccess 规则文件的顶部。还要确保在测试 URL 之前清除浏览器缓存。

RewriteEngine ON
RewriteBase /example.com/
RewriteRule ^home/(.*)$ /$1 [R=301,L]

【讨论】:

  • 嘿,感谢您帮助我,它的工作,但它只重定向到主页。我还尝试将规则放在第一行我需要的是-example.com/home/hello-world TO example.com/hello-world。我只需要从每个 url 中删除 /home/ 部分。
  • @ajax,您能否检查一下我更新的规则,如果这些对您有帮助,请告诉我?确保在测试 URL 之前清除浏览器缓存。
  • 次要问题,但此处未使用RewriteBase 指令。 (但是,它当然不应该设置为 /example.com/ - 这似乎是域的名称,而不是子目录。)
  • @MrWhite,在 OP 的 cmets 中,我可以看到 example.com/home/hello-world 被写入,所以我认为它是一个目录,这就是我设置它的原因。如果需要更改,请告诉我。
  • 好吧,在这个例子中无论如何都没有使用它,因为后面的RewriteRule 中的 substitution 字符串上有斜杠前缀。 (RewriteBase 仅适用于 relative 替换。)因此,如果编写的代码正在运行,则它不能是目录(因为它没有被使用)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2018-03-15
  • 1970-01-01
相关资源
最近更新 更多