【问题标题】:Need to rename the URL using htaccess需要使用 htaccess 重命名 URL
【发布时间】:2016-07-19 21:09:51
【问题描述】:

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

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

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

    注意:id号是自动生成的

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

请帮我解决这个问题。 提前致谢。

【问题讨论】:

    标签: .htaccess url apache2 rewrite rename


    【解决方案1】:

    您在 .htaccess 文件中使用以下代码(请注意,这不是有效代码,因为如果您有 URL "/checkout/idnumber/checkout_direct" 这意味着您已经有了“干净的 url”,为此,您有一个 .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(干净的 URL)。

    为此,通常更好的做法(并且更容易)设置参数,例如:

    /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 ^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
    

    我不太确定你想要 2 中的哪一个。

    这是您在问题中想要的,但我认为您应该包含更多 RewriteRules 以指出哪个文件将“捕获”请求,即,一旦在“example.com/booking/111”中应该指向:

    example.com/booking/111 => index.php?booking=111

    为了捕捉请求并能够 $_GET 预订号和一切。 希望对你有帮助

    【讨论】:

    • 感谢您的回复,我的网址启用了干净的网址,但下面的一个是我的确切网址,没有干净的网址。 example.com/?q=checkout/320/checkout_direct。也没有你提到的 php (checkout.php)。
    • 感谢您的更新,是的,我只使用 index.php。我的要求是你的第一个重写规则(更新一个)。将检查并更新您的详细信息。
    猜你喜欢
    • 2012-09-10
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2013-07-28
    • 2013-02-09
    相关资源
    最近更新 更多