【问题标题】:URL redirect using htaccess file, url friendly to url friendly redirect使用 htaccess 文件进行 URL 重定向,对 url 友好重定向的 url 友好
【发布时间】:2019-08-01 18:09:21
【问题描述】:

我有一个要重定向的网址

旧网址 -> https://www.my-webiste.com/products/title-of-product

新网址 ->https://www.my-website.com/title-of-product

在谷歌上,我们到处都有旧网址,我们用新的布局和 CMS 更改了网站,所以我们重定向了我们的域(old-website.com -> new-website.com 这很好用),但我不确定我该怎么做能否将此参数传递给新商店,有什么帮助吗?

如果不能,那么我们可以在https://www.new-website.com/products/title-of-product url 上加载https://www.new-website.com/title-of-product 的内容吗?

因此,当用户使用旧网址访问我的网站时,后端系统 (htaccess) 将设法在内部跳过“产品”关键字并显示适当的页面。

重写规则 ^/?products/([^/d]+)/?$ /$1 [L,QSA]

重写规则 ^products/?$ $1/new-page$2 [R=301,L]

重写规则 ^products/(\d+)?$ /$1 [L]

RewriteRule ^([^?]*) index.php?路由=$1 [L,QSA]

重写规则 ^(.)/products/(.)$ $1/$2 [R=301,L]

重写规则 ^products/(.*)$ /$1 [R=301,L]

重写规则 ^products/(.*)$ /%1 [L,R=301]

我尝试了所有这些,但我得到了以上所有内容的 404。重写引擎就像https://www.new-website.com/title-of-product 一样打开,我打开这个网址它工作正常。

简而言之就是:

我只需要从网址中删除“产品”并发送该参数。

如果有人打开https://www.my-webiste.com/products/title-of-product,那么他们必须转到https://www.my-webiste.com/title-of-product(见无产品)就是这样。

提前致谢。

【问题讨论】:

  • 请向我们展示您已经尝试过什么,或者至少您的研究到目前为止已经发现了什么。
  • RewriteRule ^(.*)/products/(.*)$ $1/$2 [R=301,L] RewriteRule ^products/(.*)$ /$1 [R=301,L] RewriteRule ^products/(.*)$ /%1 [L,R=301] RewriteRule ^/?products/([^/d]+)/?$ /$1 [L,QSA] RewriteRule ^products/?$ $1 /new-page$2 [R=301,L] RewriteRule ^products/(\d+)?$ /$1 [L] 我尝试了所有这些但仍然无法正常工作...
  • 请不要在 cmets 中发布如此长的代码 sn-ps,这很难阅读 - 请改为编辑您的问题,并在其中正确格式化它们。您还需要解释“不工作”的实际含义。你得到一个简单的 404 或其他类型的错误,...?
  • 另外,您的设置是什么,您是否将这两个域路由到同一个目录?如果你想从旧域重写到新域,那么你不能使用相对路径进行替换,你需要一个包含“新”域的绝对 URL。
  • 请查看帖子,我更新了。

标签: php .htaccess redirect


【解决方案1】:

首先,请确保你开启了rewrite模块,可以通过phpinfo()查看;功能

如果它打开,那么放置在项目主公用文件夹中的 .htaccess 文件中的这段代码应该可以工作:

RewriteEngine On
RewriteRule ^products/(.*)$ https://www.new-website.com/$1 [R=301,L]

【讨论】:

  • 当我尝试这段代码时,它仍然会出现 404 The page you requested can be found!
  • 主要问题是:您是被重定向到 new-website.com 还是在 old-website.com 域上看到 404?重写模块是否在旧服务器/域上工作 - 你能验证这一点吗?
  • 你试试 RewriteRule ^(.*)$ / [R=301,L] 之类的东西怎么样(把它放在 RewriteEngine 之后)?如果 mod rewrite 按预期工作,那么对旧域的任何请求都应该导致重定向循环。如果这没有发生,那么您应该首先专注于让重写模块工作。
  • 我更改了我的 CMS 域,但 CMS 上的 url 结构不同,所以我需要采用新的 url 并将所有 url 重定向到适当的 URL,所以域将相同,我只想删除来自 url 的“产品” 例如 my-webiste.com/products/title-of-product 必须重定向到 my-webiste.com/title-of-product
  • 那么你的规则需要是 RewriteRule ^products/(.*)$ $1 [R=301,L],但你仍然需要首先确保你的 mod 重写 /.htaccess 文件有效。
猜你喜欢
  • 2014-02-24
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多