PHP:解析不同风格的友好网址

标签 php mod-rewrite friendly-url seo

我正在编写我自己的小型框架,我将在那里实现友好的 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/

相关文章:

php - 将多个表单放在同一页面上

apache - 如何从 Apache/Centos 中的 Yii URL 中删除 index.php?

url - 了解不同站点的 slug 定位

java - 使用 Struts2 在创建博客条目时生成动态 URL

php - 如何重写 url domain.com/?id=123456 => domain.com/123456/

php - 为电子邮件激活链接 PHP 生成唯一字符串

php - android 中的 Base64 和 mcrypt_encrypt

php - 将域映射到现有子目录

.htaccess - RewriteBase 如何在 .htaccess 中工作

regex - 如何使用 htaccess 将多个域重定向到除 1 个目录之外的另一个域?