如何在php中重写动态URL和动态<a></a>链接

时间:2015-02-11 11:17:47

标签: php mysql localhost

我正在开发核心php的网站,我有

等链接
<a href="news_details.php?news_id=$data['news_id']?>">Read More</a> 

所以我的问题是要从所有网站中删除.php扩展名,也要从链接中删除网址,网址必须像http://www.example.com/news/一样好http://www.example.com/news.php?news_id = 4

所以如果有人知道怎么做,请告诉我

1 个答案:

答案 0 :(得分:0)

我将总结我的评论,以便您可以在此处标记此帖子,作为下一个遇到您问题的人的解决方案。这使得以某种方式更容易找到答案

您需要一个支持重写网址的网络服务器。大多数人可能会使用apache2 webserver,支持支持此功能。执行此操作的apache模块称为“mod_rewrite”。您可能(根据您的配置)需要先启用它。

干净漂亮的网址称为“智能网址”,因为这个术语可以更轻松地搜索教程,指南和答案。

要使mod_rewrite工作并重写URL,您需要为当前项目/目录启用模块并编写一些规则。

您可以在.htaccess文件中执行此操作,对于您的示例,它看起来像这样:

<强> htaccess的:

RewriteEngine On
RewriteRule ^news/([0-9]+)\.?.*$ news.php?id=$1 [NC,L]

这将导致服务器内部(并且没有用户可以看到)重写这样的内容:

http://www.foo.de/news/1337.my-awesome-first-newspost

 http://www.foo.de/news.php?id=1337

备注:新闻ID背后的所有内容均被忽略

正如您所见,规则被编写为正则表达式,使您能够创建非常灵活的规则。

您还可以编写多个依赖的规则,或者只在之后使用

我找到了一个页面,可以让你测试你的规则,因为在你的服务器机器上执行它时总是有点“调试”:

http://htaccess.madewithlove.be/