需要使用htaccess重命名URL

时间:2016-03-31 12:05:23

标签: .htaccess url apache2 rewrite rename

我已经尝试了很多,但没有运气。我的要求如下。

  1. 需要将网址从一个重命名为另一个

    例如:/checkout/idnumber/checkout_direct/booking/idnumber/

    注意:ID号码是自动生成的

  2. 在重命名网址时也需要获取相同的ID号(ID号会有所不同)

  3. 请帮我解决这个问题。 在此先感谢。

1 个答案:

答案 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预订号码和一切。 希望它有所帮助