我试图弄清楚如何从以下内容重写 URL:example.com/collection.php?collection=1
进入:example.com/collection-name.php
我最近重新设计了一个电子商务网站,需要将旧 URL 重定向到新 URL。我已经看到了大量关于如何在重写的 URL 中使用 collection=1 的值的说明,但没有看到如何使用文本而不是值的说明。只有 5 个集合值需要重定向,但此外还有旧 URL,其中包含多个参数,也需要作为文本重写/重定向。我认为这是有道理的。
因此,我认为如果我可以设置初始重定向,我可以将它们全部解决。
其他/更复杂的旧 URL 如下所示:example.com/collection.php?collection=1&product=2&item=3
然后需要将其重定向到:example.com/collection-name/sub-collection-name/product-name.php
不知道该怎么做。我不想在 .htaccess 文件中逐行编写,但我不知道如何完成此操作。
在此先感谢,我感谢安迪和在这件事上的所有帮助!
EDIT------------------------------------ 这是我根据提供给的信息的新重写条件和规则我。这将是包含所有查询参数的 URL 使用 3 个单独的 RewriteMaps 的规则。
RewriteCond %{QUERY_STRING} collection=([^&]+)&product=([^&]+)&item=([^&]+)
RewriteRule collection.php shop/${categorymap:%1}/${rangemap:%2}/${productmap:%3}\.php [R=301,L]
请让我知道是否有任何问题或我错过了什么。不确定我是否需要为每个查询参数使用 $1、$2、$3。我仍然是一个重写的 NOOB。谢谢!
编辑 - - - - - - - - - - - - - - - - - - - - - - - - - -----
在我的 .htaccess 文件中使用以下代码:
RewriteCond %{QUERY_STRING} collection=([^&]+)
RewriteRule collection.php shop/${categorymap:%1}\.php [R=301,L]
我的网址以“example.com/collection.php?collection=1”开头
正在重写为:example.com/shop/.php?collection=1
我对此有点迷茫。会不会是我的重定向地图没有被读取?或者是别的什么?谢谢您的帮助。