0

我在这里发布了一个类似的问题。然而,这更多的是关于如何获得建议。现在我知道该怎么做,我正在寻找有关如何做的一点帮助!

基本上我有一个几乎 100% 动态的网站。所有网站链接均使用 PHP 生成,所有页面均由 php 包含/代码组成。我正在尝试通过改进 URL(如另一个问题中所述)来改进网站的 SEO,但我有点挣扎。

我正在使用 mod_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

4 回答 4

2

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

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

目前没有看到您的链接是如何生成的,很难说如何更改代码。我想它的工作原理是这样的:

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

因此,您将其更改为:

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

对不起,如果我在语法上犯了错误,就在我的脑海中......

于 2009-10-05T12:18:20.070 回答
1

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

于 2009-10-05T09:01:04.710 回答
1

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

  1. Apache 将使用 .htaccess 中的规则重写 URL,因此写入的任何内容都将重定向到 index.php?q=。例如,输入http://example.com/i/am/here将导致调用 index.php?q=/i/am/here
  2. Index.php 将解析来自 $_GET["q"] 的路径并决定要做什么。例如,它可能包含一个页面,或者去数据库,查找路径,获取适当的内容并打印出来

如果您想要一个 .htaccess 的工作示例,它可以做到这一点(使用 ?q=path 重定向到 index.php),请查看 drupal 是如何做到的:

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

于 2009-10-05T09:02:31.927 回答
1

正如 Palantir 所写,这是使用 mod_rewrite 和 .htaccess 完成的。要将正确的重写条件添加到您的 .htaccess 中,您可能需要查看 Mod Rewrite Generator(例如http://www.generateit.net/mod-rewrite/)。让它变得容易得多。

于 2009-10-05T09:58:51.110 回答