我正在编写我自己的小型框架,我将在那里实现友好的 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 并将它们规范化为一种基本形式,您只需编写一个简单的分词器函数来规范化不同的类型,然后您可以使用规范化的类型来获取实际目的地。我已经这样做了,但不是没有 mod_rewrite。很确定没有它也可以完成。
我通常有一个索引文件来解析任何 url,然后进行一系列请求处理和路由以获取输出,而无需将任何 url 直接映射到任何文件。只需将所有内容 mod_rewrite 到该索引文件并解析 $_SERVER['REQUEST_URI']
。
关于PHP:解析不同风格的友好网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2059878/