使用PHP的动态URL的SEO友好URL

时间:2010-05-26 17:27:09

标签: php .htaccess mod-rewrite seo

目前我有这样的网址

http://<client_name>.website.com/index.php?function_name&cat=32

我想进行设置,以便我们的营销人员可以发布网址

http://<client_name>.website.com/<parent_category>/<category>   

“cat = XX”将仅生成最后一个<category>。但营销部门希望在其广告系列中使用父类别。目前我们通过html根目录中的index.php传递所有URL(稍后这将变得很重要)。

我尝试了几种解决方案,包括:

  1. mod_rewrite - 这种方法的问题在于它变成了一个巨大的.htaccess文件,因为我们需要为每个类别编写规则。

  2. RewriteMap - 由于我可以查询数据库以构建输出的地图文件,因此非常接近。但是,我已经知道我们无法访问httpd.conf。

  3. index.php - 我已尝试通过我们的index.php文件运行所有内容,但该文件无法保证浏览器中的URL对SEO有用。

  4. 我希望有人有另一个可能有所帮助的想法,我真的很感激。如果您在网络上引用了一些有助于实现这一目标的内容。

2 个答案:

答案 0 :(得分:6)

为什么不使用mod_rewrite将所有请求路由到index.php并使用PHP编写路由逻辑,这似乎比编写不同的重写规则更可靠?

简单.htaccess就是这个

RewriteEngine on
RewriteBase /
RewriteCond  %{REQUEST_FILENAME} !-f
RewriteCond  %{REQUEST_FILENAME} !-d
RewriteRule  ^(.*)$ index.php?request=$1 [QSA,L]

index.php中的几行PHP代码

$client_name = strtok($_SERVER['HTTP_HOST'],".");
list ($cat,$subcat) = explode("/",trim($_GET['request'],"/"));

答案 1 :(得分:1)

除了Col.Srapnel的答案之外,至少要减少选择:

RewriteRule ^/([-a-zA-Z0-9_]+)/([0-9]+)$ index.php?function_name=$1&cat=$2 [L,QSA]  # domain.com/cat_name/23 is sent to the server as domain.com/index.php?function_name=cat_name&cat=23