PHP自动创建seo友好网址

时间:2015-07-09 09:13:48

标签: php .htaccess url mod-rewrite

我有PHP网址,用于显示每个页面的节目内容,如:

类别:

articles
gallery
page
books
....

URL:

http://localhost/cms/load.php?page=articles&id=1&title=this-is-a-title.html&lang=ru
http://localhost/cms/load.php?page=page&id=10&title=this-is-a-page-title.html&lang=ru

在行动中,我需要像这样自动重写URL到seo友好网址:

http://localhost/cms/ru/articles/1/this-is-a-title.html
http://localhost/cms/ru/page/10/this-is-a-page-title.html

load.php

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

如何使用URL(不使用mod重写的首选项)生成此PHP?或者与.htaccess and PHP

4 个答案:

答案 0 :(得分:1)

您可以通过以下方式实现此目的:

的.htaccess

RewriteEngine on
RewriteBase /cms/
RewriteRule ^([a-z,A-Z]+)/([a-z,A-Z]+)/([0-9]+)/([a-z,A-Z,0-9]+)$ ./load.php?page=$2&id=$3&title=$4&lang=$1 [L,NC]

这样你的load.php文件就不需要改变了,可以接受这些文件。

您需要更改创建网址的代码,如果您更新了当前生成网址的答案,我们也可以为您提供帮助。

答案 1 :(得分:1)

我建议使用路由类。您将添加一个htaccess文件,将所有内容重写为index.php文件,然后您将控制PHP中的所有路由。

AltoRouter是我最喜欢的https://github.com/dannyvankooten/AltoRouter。它的灵感来自Ruby的Sinatra,但如果您使用Google“PHP路由类”,您可以找到更多类似的类来用于路由您的URL。

答案 2 :(得分:1)

为自己省去一些痛苦并使用路由框架(即http://www.slimframework.com/

虽然不包括seo friendly urls(也称为slugs)的创建

答案 3 :(得分:0)

在这里,您可以找到两个有用的指南,用于了解.htacces的工作原理。有很多很好的例子,我希望它有所帮助:

第一个指南: http://code.tutsplus.com/tutorials/the-ultimate-guide-to-htaccess-files--net-4757

第二个指南: https://www.branded3.com/blog/htaccess-mod_rewrite-ultimate-guide/