【问题标题】:Most effective way to code SEO friendly URLs?编码 SEO 友好 URL 的最有效方法是什么?
【发布时间】:2012-02-13 10:10:53
【问题描述】:

我目前使用 .htaccess 和 PHP 通过以下方式解析 URL:

网址

http://blah.com/article/123_this-that-and-the-other

.htaccess

RewriteEngine On
RewriteRule ^article/([0-9]+)_(.+)/?$   index.php?page=article&id=$1 [L]

PHP

$page = isset($_GET['page']) ? safeGET($_GET['page']) : null;
$id   = isset($_GET['id'])   ? safeGET($_GET['id'])   : null;
if ($page=='article') { include 'article.php'; } elseif { ... }

我已经开始遇到与我的 $_GET 请求中不喜欢“管理员”一词的过于偏执的 Mod_Security 引擎有关的问题。但大多数情况下,我只是在寻找解析 SEO 友好 URL 的新技术。

有人知道更优雅的方法吗?

【问题讨论】:

  • 我认为您应该尝试stellarbuild.com/blog/article/… 它使用整个标签来检查数据库。如果您只想使用整数,则您的 URL 可以同时包含两者。

标签: php .htaccess seo url-routing friendly-url


【解决方案1】:

它被称为“路由器”。

Zend Controller Routerf.e.

【讨论】:

  • 谢谢,我还没有看到!乍一看,它似乎大大增加了所需的编码量。我正在寻找简化事情的方法。
  • 它是一种简洁的方式,看起来工作量更大,但使用框架非常适合构建可靠的应用程序。无论是你的还是 Asa 的重写,都会产生双重内容。
  • “双重内容”是指.htaccess将URI元素复制到$_GET超全局变量中吗?如果是这样,我想到我什至可能不需要$_GET,而我可以简单地用PHP 解析$_SERVER['REQUEST_URI']……这不就是Zend Controller Router 框架的作用吗?
【解决方案2】:

您可以将整个查询字符串作为一个参数。

RewriteRule ^([^.]+)$ index.php?url=$1 [QSA,L]

然后你可以用php分割字符串,并将不同的参数转换成一个数组来做你喜欢的任何事情。

【讨论】:

  • 是的,我之前尝试过......它有点相同,无论是 .htaccess 还是 php 解析请求......我发现到目前为止它更干净(更少的代码)使用 .htaccess
  • 这也获取所有其他文件类型 f.e.图片。
猜你喜欢
  • 2016-02-14
  • 2014-06-21
  • 2011-03-05
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2015-12-24
  • 2010-12-23
相关资源
最近更新 更多