【问题标题】:Redirect and change URL with Apache/htaccess使用 Apache/htaccess 重定向和更改 URL
【发布时间】:2020-11-23 19:18:46
【问题描述】:

我想以这种方式使用 http/https 更改/重定向 URI:

来自:http:// or https://xyz.lastdomain.com/b/custom/any-string/456?foo=bar

收件人:https://custom.nextdomain.com/b/any-string/456?foo=bar

自定义字符串应该在新 URL 中,并且所有来自 b 的内容都应该添加到 URI 的末尾。

非常感谢您的帮助。

【问题讨论】:

  • 需要更清楚。您是否要重定向多个子域? custom.nextdomain.com 是否已在 VistualHost 中定义?
  • 感谢您的提问,我试着解释一下:第一个 URL 将从不同的(旧)网络服务器调用,其中“自定义”充当占位符。第二个 URL 位于具有不同 url-scheme 的新服务器上,其中 "custom" 应应用与原始 URL 中相同的值,并且应包括从 "b" 开始的所有内容。

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


【解决方案1】:

您可以从旧站点的 .htaccess 中尝试此重定向规则:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^xyz\.lastdomain\.com$ [NC]
RewriteRule ^b/([\w-]+)/(.*)$ http://$1.nextdomain.com/b/$2 [L,NC,R=301,NE]

这假设所有路径都以/b/ 开头,紧跟在域名之后。

【讨论】:

  • 非常感谢您的帮助。此解决方案设置了开始,但尚未准备好。它导致输出“custom.nextdomain.com/custom?foo=bar”。 “/”后面的“custom”不应该在那里,而是“b/any-string/456?foo=bar”。
  • 抱歉有错别字,请尝试我更新的答案
  • 这很好,现在可以使用了,非常感谢。不幸的是,我在我的问题中犯了一个错误。 “/b/”不是在“custom”之后,它总是在“custom”之前,就在“.com/”之后。对此我感到非常抱歉,你知道如何调整它,以便它在新的条件下工作吗? (我编辑了原帖)
  • 没问题,我们都会犯错。请尝试我的更新答案。
  • “/b/”现在被删除了吗?
【解决方案2】:

考虑到您的 htaccess 文件和自定义文件夹位于根位置,您能否尝试以下操作。

RewriteEngine ON
RewriteCond %{REQUEST_URI} !custom [NC]
RewriteRule ^(.*)$ https://custom.nextdomain.com/custom/$1 [L]

【讨论】:

  • 很遗憾没有满足条件:(
  • @PhilG,您在日志中遇到任何错误吗?或者请详细说明什么不起作用
猜你喜欢
  • 2012-04-27
  • 2014-05-25
  • 2012-11-20
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多