【问题标题】:redirect multiple URLs through .htaccess通过 .htaccess 重定向多个 URL
【发布时间】:2021-04-02 04:13:14
【问题描述】:

我有很多类似网址的页面,例如:

https://example.com/mainpage/1
https://example.com/mainpage/2
https://example.com/mainpage/3
.
..
https://example.com/mainpage/100

我想使用.htaccess 将它们重定向到新的单个页面。喜欢:

  • https://example.com/mainpage/1 应该重定向到 https://example.com/mainpage-1
  • https://example.com/mainpage/2 应该重定向到 https://example.com/mainpage-2
  • https://example.com/mainpage/3 应该重定向到 https://example.com/mainpage-3

等等。

由于有很多页面非常相似的 URL,我想知道每种类型的单个代码是否可以工作。

附: : 我对编码知之甚少。我的个人博客需要帮助

【问题讨论】:

  • 欢迎来到 SO,请在您的问题中分享您的 .htaccess 规则文件,谢谢。
  • 我没有编码技能。在谷歌上阅读如何通过 .htaccess 进行重定向。由于页数太多只是想知道我可以使用单行代码来完成。
  • @RakeshVishwakarma 如果您使用的是 WordPress,那么大概您已经有一个 .htaccess 文件?指令的顺序很重要,知道你已经有哪些指令可以避免冲突。
  • 为什么这个问题被关闭了?!这不是一个“通用计算硬件和软件”的问题。这是一个关于 HTTP 重定向的问题,与 Web 应用程序逻辑相关 - 就像 SO!? 上的 1000 个其他相关问题一样!?

标签: wordpress .htaccess redirect mod-rewrite url-rewriting


【解决方案1】:

您能否尝试使用所示示例进行以下、编写和测试。请在测试 URL 之前清除浏览器缓存。第一个特定于显示的示例,将主页字符串保留在第一个反向引用中,并在第二个反向引用中 / 之后的其余数字,我们在重定向右侧部分时使用它们。

特定于样品:

RewriteEngine ON
RewriteRule ^(mainpage)/([0-9]+)/?$ $1-$2 [R=302,NC,L]

通用一:

RewriteEngine ON
RewriteRule ^([\w-]+)/([0-9]+)/?$ $1-$2 [R=302,L]

【讨论】:

  • 看起来 OP 想要在外部 3xx “重定向”用户,而不是在内部“重写”请求(如果他们使用 WordPress,这实际上不会起作用)。重要的是,这些指令需要 .htaccess 中现有的 WordPress 指令(前端控制器)之前。
  • 次要,NC 在使用 \w 正则表达式速记字符类时不是必需的,因为它自然已经包含大写和小写字母。
  • @RakeshVishwakarma 上面的指令应该 # BEGIN WordPress 部分之前。看起来您还想“重定向”用户(而不是“重写”),因此您需要将R(或R=302)标志添加到RewriteRule 指令。例如。 RewriteRule ^([\w-]+)/([0-9]+)/?$ /$1-$2 [R=302,L] - 还要注意 substitution 字符串上的斜杠前缀(尽管这可能不是绝对必要的,因为 WordPress 通常定义 RewriteBase /。但是,建议在外部重定向中明确包含斜杠前缀) .
  • 太棒了!!有效。非常感谢@MrWhite 和 Ravinder Singh
  • @RavinderSingh13:您需要按照 MrWhite 的建议通过包含 R=302 来修复答案
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 2017-02-04
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多