【发布时间】:2011-01-04 19:36:26
【问题描述】:
我正在编写自己的小框架,并且我将在那里实现友好的 URL。 mod_rewrite 很棒。但我希望能够同时处理多种类型的友好 URL:
/index.php?ac=user&an=showprofile (fallback variant, the worst)
/index.php/user/showprofile (supposedly, can be disabled by security settings)
index.php?user/showprofile (optional, not needed)
/user/showprofile (ideal, but requires mod_rewrite or dirty ErrorDocument tricks)
我希望同时支持所有变体,以便使用任何方案生成的旧链接将永远有效。我应该为此编写自己的解析函数,还是我错过了一些可以做到的库/脚本?从 Symfony 或 Zend 等大型框架中提取算法非常困难。还有许多不同的不明显的情况,例如正确处理 UTF-8 编码的 URL 或使用 magic_quotes_runtime 等...
【问题讨论】:
-
为什么要保留旧系统?如果有人用旧系统为 URL 添加了书签,并且它重写到新系统,即使 URL 更改为新系统,他们仍然会到达正确的站点。
-
是的,没错。您是什么意思“保留旧系统”?我需要所有类型的链接同时工作。
-
如果您希望所有这些链接到同一个地方,只需将所有包含“showprofile”的请求重写为脚本,然后输出用户名的配置文件。
-
第一个 URL 是简单的
$_GET变量。第二个和第三个你可以简单地拆分?或/字符来获取参数。第四个你可以从框架中剥离出来;只是.htaccess。我在这里想说的是,您可以在 5 行或更少的代码中完成这些工作。周围没有任何库,因为它实现起来很简单。
标签: php mod-rewrite friendly-url seo