Php htaccess-pretty-url重定向错误

Php htaccess-pretty-url重定向错误,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,我在网上到处寻找这个问题的答案,但我没有找到与我有同样问题的人 我想创建一种类似亚马逊或其他运营商的跟踪订单。为此,我为订单指定了一个唯一的曲目编号。用户可以在表单中或直接在url中键入曲目编号 我通过get方法获取曲目编号,因此我需要美化URL,但我还希望保留搜索表单功能,因此需要重定向 我试着这样做: 原始url:/order/?reference=曲目编号其中曲目编号是一个随机标记,如TRG58a8a132ec858 所需url:/order/track number如上所述track\u

我在网上到处寻找这个问题的答案,但我没有找到与我有同样问题的人

我想创建一种类似亚马逊或其他运营商的跟踪订单。为此,我为订单指定了一个唯一的曲目编号。用户可以在表单中或直接在url中键入曲目编号

我通过get方法获取曲目编号,因此我需要美化URL,但我还希望保留搜索表单功能,因此需要重定向

我试着这样做:

原始url:
/order/?reference=曲目编号
其中
曲目编号
是一个随机标记,如
TRG58a8a132ec858

所需url:
/order/track number
如上所述
track\u number
是一个随机标记,如
TRG58a8a132ec858

在我的
.htaccess
中,我编写了以下规则:

Rewrite Engine on
RewriteRule ^/?order/([A-Z]{3}.*)/?$ /order/?reference=$1 [L,R=301]
我得到了一些灵感,并且


它反向工作:当我键入原始url时,它不会重定向,当我键入所需的url时,它会重定向到原始url


我有点困惑。哪里出错?

“当我键入原始url时,它不会重定向,而当我键入所需的url时,它会重定向到原始url。”--这不是它应该做的吗?因此,当您键入
/order/track number
时,它会指向
/order/?reference=track number
而不是我所说的?@A.Zheng,当我键入原始url(一点也不漂亮)时,它不会重定向到漂亮的url。所以不,它不应该这样工作,是的,
/order/TRG58a8a132ec858
重定向到
/order/?reference=TRG58a8a132ec858
,这是错误的
/order/?reference=TRG58a8a132ec858
应该重定向到
/order/TRG58a8a132ec858
而不是相反!嗯,我认为这是一个误解,通常当你重写一个url时,你想用一个假的url来掩盖你丑陋的url,这个url实际上并不存在,而是由服务器重写规则创建的。这就是它的工作原理。键入
/order/track number
时,重写规则告诉服务器获取确实存在的
/order/?reference=track number
。这不是一个“重定向”,因为没有真正的
/order/track number
页面可供重定向。您的服务器正在幕后处理此问题。是。好啊那么,如果用户键入丑陋的URL,为什么它不会重定向到漂亮的URL呢?我的意思是,如果你真的想要这种行为,你可以切换规则的顺序,让丑陋的URL先出现,然后是想要的,因为规则是
RewriteRule[match URL][redirect to URL]
但我很确定您想要它,这样用户就不必看到丑陋的url,所以他们会输入所需的url,这实际上会在幕后获取丑陋的url。