如何在php中为新页面生成新的url

时间:2012-05-10 03:35:32

标签: php url web

如果我们不使用框架,那么如何在PHP中为可能由用户动态创建的新页面生成新的URL? 例如,用户可以创建新帐户或发布新的文章,然后我们将为用户分配特定网址,就像http://www.a.com/username/article/2011231.php一样。 我的问题是如何生成具体的数字2011231和整个网址?

2 个答案:

答案 0 :(得分:2)

你在寻找的是漂亮的网址

您需要使用网址重写。

您需要在数据库中使用适当的URL保存文章。假设用户创建了一篇文章How to bake a cake。您可以在article表格中存储此文章的精美网址,例如how-to-bake-a-cake。您将需要一些机制将标题转换为这些漂亮的URL

前端的发言是article.php

article.php的默认工作是example.com/article.php?url=how-to-bake-a-cake

article.php中,您会找到带有私有商品的文章并展示它。

现在,您可以使用.htaccess实际拥有example.com/article/how-to-bake-a-cake

之类的网址

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} ^article/(.*)
RewriteRule article.php?url=$1

答案 1 :(得分:0)

从它的外观来看,该URL由格式为yearmonthday.php的日期组成。如果这是您要复制的内容,则可以使用date('Ymd')。另一方面,假设您需要递增数字并将文章存储在数据库中,只需运行INSERT命令,然后使用mysql_insert_id()函数获取ID。然后你需要一个Apache重写来重写/username/article/[number].php到一个PHP文件,该文件将在数据库中查找该文章并显示它,如下所示:

RewriteEngine On
RewriteRule ^/username/article/(\d*)\.php$ /articles.php?articleid=$1

例如,对http://domain.com/username/article/12345.php的请求将其发送到/articles.php?articleid=12345。从那里,$_GET["articleid"]将包含ID。如果您还需要PHP脚本来了解用户名,您可以使用:

RewriteEngine On
RewriteRule ^/(.*)/article/(\d*)\.php$ /articles.php?username=$1&articleid=$2

然后$_GET["username"]将拥有用户名,$_GET["articleid"]将拥有文章ID。