【问题标题】:How to rewrite the dynamic url and dynamic <a></a> links in php如何在php中重写动态url和动态<a></a>链接
【发布时间】:2015-02-11 11:17:47
【问题描述】:

我正在用核心 php 开发一个网站,并且我有诸如

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

所以我的问题是从所有网站以及链接中删除 .php 扩展名,并且 url 必须像 http://www.example.com/news/ 一样好,而不像 http://www.example.com/news.php?news_id = 4 那样好

所以如果有人知道如何做到这一点,请告诉我

【问题讨论】:

  • How to do URL re-writing in PHP? 可能重复或使用常规 mod_rewrite 代替
  • 如果您使用的是支持重写模组的网络服务器,那就对了。例如,使您能够这样做的 apache2 模块称为“mod_rewrite”。您可以编写应用于属于这些规则范围的文件的表达式和规则。顺便说一句:您正在寻找的技术称为“智能网址”
  • 能否请您向我介绍更多有关此的内容或进行类似的演示,谢谢
  • 不是具体的,而是更抽象一点:您可以编写一条规则,告诉 example.com/news/ 是内部的(没有用户查看页面可以看到)总是重写为示例.com/news/news.php?id=。你很幸运。该规则应该很容易编写,但我还需要谷歌它是如何工作的,因为我忘记了确切的语法。也许你只是用谷歌搜索自己的例子来重写 URL 参数和 QueryStrings(这些东西在 URL 末尾的 ? 后面)
  • 感谢您的大力支持,非常感谢 serjoscha

标签: php mysql localhost


【解决方案1】:

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

您需要一个支持URL 重写 的网络服务器。大多数人可能使用 确实 支持这一点的 apache2 网络服务器。执行此操作的 apache 模块称为“mod_rewrite”。您可能(取决于您的配置)需要先启用它。

干净漂亮的 URL 被称为“智能 URL”,因为这个术语使搜索教程、指南和答案变得更加容易。

要使 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

备注:News ID 后面的所有内容都会被忽略

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

您还可以编写多个相互依赖的规则,或者只是一个之后应用。

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

http://htaccess.madewithlove.be/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多