我发过类似的问题 这里. 。然而,这更多的是为了获得关于该做什么的建议。现在我知道该怎么做,我正在寻求一些关于如何做的帮助!

基本上我有一个几乎 100% 动态的网站。所有网站链接均使用 PHP 生成,所有页面均由 php include/code 组成。我正在尝试通过改进 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

在另一个问题上有一个例子 秋葵 但是我觉得它有点混乱并且不清楚它到底在做什么。

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

提前致谢。

有帮助吗?

解决方案

我想我看到你以后......你已经做了所有的URL重写,但所有网页之间的链接使用的是旧的URL语法。

我可以解决此看到的唯一的办法就是做一些正则表达式的搜索和链接替代,使他们使用新的语法。这将是一个比较复杂一点,如果是动态生成的所有链接,但希望不会有太大的这个来做。

在没有看到您的联系是如何在瞬间产生,这是很难说如何改变的代码。我想它的工作原理是这样的,虽然:

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

所以,你会更改为:

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

很抱歉,如果我在语法上所犯的错误,就在我的头顶......

其他提示

除非我误解你的问题,你不解析“丑陋”的网址,你的PHP脚本调用,所以你$_GET[]您的参数(M,的categoryID,的productID),你将它们结合起来,让您不错的网址,其不应太硬(只是有点逻辑的,以查看是否一个参数是存在的,并置的字符串)。

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

  1. Apache 将使用 .htaccess 中的规则重写 URL,以便任何写入的内容都将被重定向到 index.php?q=。例如,输入 http://example.com/i/am/这里 将导致调用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

作为真知晶球写这是使用mod_rewrite和htaccess的完成。为了得到正确的重写条件进入你的.htaccess你可能想看看一个现代重写生成器(例如的 http://www.generateit.net/mod-rewrite/ )。使得它容易得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top