代码之家  ›  专栏  ›  技术社区  ›  James

使用PHP解析URL

  •  0
  • James  · 技术社区  · 16 年前

    我也提出了类似的问题 here . 然而,这更多的是关于如何做得到建议。现在我知道该做什么了,我正在寻找一些帮助,关于如何做!

    基本上我有一个几乎100%动态的网站。所有的网站链接都是用php生成的,所有的页面都由php includes/code组成。我正试图通过改进URL(如另一个问题中所述)来改进站点的SEO,但我有点挣扎。

    我正在使用mod ou rewrite将漂亮的URL重写为服务器上不好看的URL。所以我现在需要的是将难看的URL(由页面中的PHP代码生成)转换为更好的URL。

    以下是我需要解析的URL(这些也在另一个问题中):

    /index.php?m=ModuleType
    /index.php?m=ModuleType&categoryID=id
    /index.php?m=ModuleType&categoryID=id&productID=id
    /index.php?page=PageType
    /index.php?page=PageType&detail=yes
    

    以下是我希望解析上述URL的目的:

    /ModuleType
    /ModuleType/CategoryName
    /ModuleType/CategoryName/ProductName
    /PageType
    /PageType/Detail
    

    有一个例子是关于 Gumbo 但我觉得这有点混乱,不清楚它到底在做什么。

    有人能帮我解决这个问题吗?

    事先谢谢。

    4 回复  |  直到 16 年前
        1
  •  2
  •   Skilldrick    16 年前

    我想我知道你在追求什么…您已经完成了所有的URL重写,但是页面之间的所有链接都使用了旧的URL语法。

    我能理解的唯一方法是对链接进行某种regex搜索和替换,以便它们使用新的语法。如果所有的链接都是动态生成的,这会有点复杂,但希望不会有太多的事情要做。

    如果不了解当前链接是如何生成的,就很难说出如何更改代码。我想它的工作原理是这样的:

    <?php echo "<a href='/index.php?m=$ModuleType&categoryID=$id'>"; ?>
    

    因此,您可以将此更改为:

    <?php echo "<a href='$ModuleType/$id'>"; ?>
    

    很抱歉,如果我在语法上犯了错误,那就别想了…

        2
  •  1
  •   PhiLho    16 年前

    除非我误解了你的问题,否则你不会解析“难看”的URL,你的PHP脚本是用它们来调用的,所以你 $_GET[] 您的参数(m,categoryID,productID)并将它们组合成漂亮的URL,这不应该太难(只是一点逻辑,看看是否有一个参数存在并连接字符串)。

        3
  •  1
  •   Palantir    16 年前

    您需要一个前端控制器,它将把URL发送到正确的页面。

    1. Apache将使用.htaccess中的规则重写URL,以便将写入的任何内容重定向到index.php?Q=。例如,键入 http://example.com/i/am/here 会导致调用index.php吗?Q=/I/AM/这里
    2. php将解析$_get[“q”]中的路径并决定要做什么。例如,它可能包含一个页面,或者转到数据库,查找路径,获取适当的内容并打印出来。

    如果您想要一个.htaccess的工作示例,它将完全做到这一点(用重定向到index.php吗?q=path)看看Drupal是如何做到的:

    http://cvs.drupal.org/viewvc.py/drupal/drupal/.htaccess?revision=1.104

        4
  •  1
  •   svenkubiak    16 年前

    正如帕兰蒂尔所写,这是使用mod ou rewrite和.htaccess完成的。要获得正确的重写条件到.htaccess中,您可能需要查看mod rewrite生成器(例如 http://www.generateit.net/mod-rewrite/ )让事情变得容易多了。

    推荐文章