[英]PHP dynamic DB page rewrite URL
我怎样才能制作www.mydomain.com/folder/?id=123 ---> www.mydomain.com/folder/xCkLbgGge
我希望我的数据库查询页面能够获得它自己的URL,就像我在twitter等上看到的那样。
这被称为“slug”wordpress使这个术语流行。 无论如何。
最终你需要做的是拥有一个.htaccess文件来捕获你所有的传入流量,然后在服务器级别对其进行改造,以便在某种意义上与你的PHP一起工作,你仍然会保持?id = 123逻辑,但是对于客户端side'/ folder / FHJKD /'将是可见结果。
这是一个.htaccess文件的例子我在...上使用了类似的逻辑。(对于那个问题,wordpress也是如此)。
RewriteEngine On
#strips the www out of the domain if there
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
#applies logic that changes the domain from http://mydomain.com/post/my-article
#to resemble http://mydomain.com/?id=post/my-article
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?id=$1 [QSA,L]
这将做什么是在domain.com/之后的所有内容并将其作为变量传递给index.php此示例中的变量将是'id',因此您必须设置最适合您的站点需要的逻辑。
例
<?php
//the URL for the example here: http://mydomain.com/?id=post/my-article
if($_GET['id'])
{
$myParams = explode('/', $_GET['id']);
echo '<pre>';
print_r($myParams);
echo '</pre>';
}
?>
现在这个的逻辑必须更深入,这只是一个基本层面的纯粹例子,但总的来说,特别是因为我假设你使用数据库工作,你要确保$ myParams清除恶意代码,可以注入你的PHP或数据库。
以上$myParams
通过print_r()
的输出将是:
Array(
[0] => post
[1] => my-article
)
要使用它,您至少需要做
echo $myParams[0].'<br />';
或者你可以这样做,因为大多数浏览器会添加最终/
<?php
//the URL for the example here: http://mydomain.com/?id=post/my-article
if($_GET['id'])
{
//breaks the variable apart, removes any empty array values and reorders the index
$myParams = array_values(array_filter(explode('/', $_GET['id'])));
if(count($myParams > 1)
{
$sql = "SELECT * FROM post_table WHERE slug = '".mysql_real_escape_string($myParams[1])."'";
$result = mysql_query($sql);
}
}
?>
现在这是一个非常粗略的例子,你想在那里工作一些逻辑以防止mysql注入,然后你将应用查询,就像你现在如何使用id = 123拉出你的文章。
或者你也可以走一条完全不同的路线,探索MVC(模型视图控制)的奇迹。 像CodeIgniter这样的东西是一个很好的简单的MVC框架,可以开始使用。 但这取决于你。
这可以通过mod_rewrite
实现,例如通过.htaccess
文件。
在你的.htacess中,你需要添加RewriteEngine。
在那之后,你需要做一些正则表达式来使这个小野兽工作。 我假设?id是folder.php?id = 123。
例如文件夹片段:RewriteRule ^文件夹/([a-zA-Z0-9 _-] +)/([0-9] +)。html $ folder.php?id = $ 123
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.