通过htaccess将一个URL重写为另一个URL

时间:2019-01-11 05:34:01

标签: .htaccess mod-rewrite url-redirection

我的一位同事对通过.htaccess进行重定向感到困惑。

下面是示例格式:

1。) 原始网址:

https://en.example.com/product_info.php/1596-dry-out-standard-set-p-255?osCsid=50cqlnno30m6dcpb45kkooat36

重定向URL:

https://en.example.com/products/s-39-ms-1596-dry-out-standard-set

2。) 原始网址:

https://en.aersampling.com/product_info.php/bottle-ldpe-wide-mouth-p-120?osCsid=50cqlnno30m6dcpb45kkooat36

重定向URL:

https://en.aersampling.com/products/pn-385-bottle-ldpe-wide-mouth-1-liter

我不知道该怎么办,请告知。谢谢。

1 个答案:

答案 0 :(得分:0)

这将不起作用-问题是原始URL中的信息与重定向URL不同。也就是说,您在一个数据中却没有另一个数据。所有重写规则真正可以做的就是与URL进行模式匹配,并移动数据以重新格式化URL。

您能做的最好的事情就是这样:

RewriteRule ^product_info.php/(.+)-p-[0-9]+ products/$1? [L]

但这会漏掉s-39-ms-1pn-385之类的信息。

如果您实际上想屏蔽URL,以便“重定向” URL屏蔽原始URL,则情况相同。

“重定向” URL中存在的数据与原始URL中的数据不匹配,因此您真的无法使用纯htaccess做到这一点。

您可能能够做的是建立一种方法,用户通过该方法发送请求,然后您将其路由到一个特殊的脚本,该脚本分析URL,查询数据存储并构造新的存储,以提取缺失的信息。

如果您确实要重定向,这很容易,因为您只需要告诉脚本重定向用户即可,但是如果要屏蔽URL,则会变得混乱,因为您必须直接在页面上投放页面处理脚本。

希望这会有所帮助。