我已经尝试了很多,但没有运气。我的要求如下。
需要将网址从一个重命名为另一个
例如:/checkout/idnumber/checkout_direct
至/booking/idnumber/
注意:ID号码是自动生成的
在重命名网址时也需要获取相同的ID号(ID号会有所不同)
请帮我解决这个问题。 在此先感谢。
答案 0 :(得分:0)
您可以在.htaccess文件中使用以下代码(请注意,这不是一个正常工作的代码,因为如果您有URL "/checkout/idnumber/checkout_direct"
,则表示您已经拥有了“干净的网址”,并为此,你有.htaccess重写规则,例如清理.php并可能与此冲突):
RewriteEngine On
RewriteRule ^/?booking/([^/]+)/?$ /checkout/$1/checkout_direct [L,QSA]
#redirects from /checkout/*/checkout_direct to /booking/*/ where * == anything
如果您尚未设置任何.htaccess规则,则您的网址将如下所示:
/checkout.php?id_number=123&checkout_direct=true
而不是:/ checkout/id_number/checkout
(干净的网址)。
为此,通常是更好的练习(并且更容易)设置params,如:
/checkout.php?id_number=123
然后:
原始网址: http://www.example.com/checkout.php?id_number=1 #id_number = 123
所需的目标网址: http://www.example.com/booking/123/
.htaccess语法:
RewriteEngine on
RewriteCond %{QUERY_STRING} id_number=1
RewriteRule ^checkout\.php$ /booking/? [L,R=301]
这是一个非常好的例子,介绍如何使用.htaccess:https://gist.github.com/ScottPhillips/1721489
希望对你有所帮助!
更新
根据你的评论,我猜你的文件是'index.php',对吧?这是RewriteRule:
RewriteRule ^example.com/checkout/([0-9]+)/?$/checkout_direct example.com/booking/$1
这将使所有请求来自:example.com/checkout/{any_number}/checkout_direct重定向到example.com/booking/{any_number}。或者:
RewriteRule example.com/booking/([0-9]+)/?$ ^example.com/checkout/$1/checkout_direct
我不确定你想要的是什么。
这是你想要的问题,但我认为你应该包含更多的RewriteRules来指出哪个文件将“捕获”请求,即,在'example.com/booking/111'中应该指向:
example.com/booking/111
=> index.php?booking=111
为了捕捉请求并能够$ _GET预订号码和一切。 希望它有所帮助