【问题标题】:Redirect requested asp urls to php using htaccess使用 htaccess 将请求的 asp url 重定向到 php
【发布时间】:2013-07-12 09:50:21
【问题描述】:

我们对网站进行了重大改造,现在我们的新网站是基于 PHP 的。我们有一些网站将我们的旧页面链接到它们,这些旧页面在过去是 asp 页面。我想创建一个 htaccess 规则,但我没有得到想要的结果。如果有人可以提供帮助,那就太好了。

传入页面的格式为

http://www.mysite.com/tour.asp?id=1234

其中 1234 是动态的并且可以变化。我想将此重定向到页面viewer.php 并将查询字符串变量id 更改为tourid,因此请求的页面应该是

http://www.mysite.com/viewer/1234

我在 htaccess 中有另一个规则,它将上面的 url 路由到

http://www.mysite.com/viewer.php?tourid=1234(这是有效的)

我需要一个规则,将第一个 url 路由到第二个,希望它会打开第三个 url。我怎样才能做到这一点?

由于我是 htaccess 的新手,有人可以帮助我解决如何实现此路由吗?我想在这里澄清一下,服务器现在是 php,我必须只使用 htaccess 来完成。我关注了其他类似的问题,但没有找到能回答我的问题的问题。

【问题讨论】:

    标签: php apache .htaccess url-rewriting apache2.2


    【解决方案1】:

    UPADTE - 我第一次弄错了,这里是更正的版本。

    # Match and capture the id value from the URL
    RewriteCond %{QUERY_STRING} id=([0-9]+)
    # Redirect by passing the ID to the new site - the ? at the end removes existing query string
    RewriteRule tour.asp http://www.mysite.com/viewer/%1? [R=301,L]
    

    我假设 ID 只是数字。

    此答案的来源是https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html - 搜索“修改查询字符串”以查找有关删除查询字符串的信息。

    【讨论】:

    • 嗨,谢谢,它解决了一个小问题,它在末尾添加了查询字符串,如mysite.com/viewer/324?id=324
    • 尝试添加一个?就在 %1 之后 - 我现在会更新我的答案。
    • 感谢工作就像一个魅力......虽然与这里提出的问题无关,但这些规则将适用于所有具有查询字符串 id 的请求?如果是的话,我可以将其限制为仅在 tour.asp 上的那些?
    • @LoneWOLFs RewriteRule 只会重定向匹配 tour.asp 的请求,并且在确保请求也具有 id 查询字符串之前的 RewriteCond 会重定向
    • 哦,好的,谢谢您的帮助。接受并赞成。特别是对于 gr8 的查询字符串删除
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    相关资源
    最近更新 更多