如何将domain.com/news.php?post_id=56转换为domain.com/news/post-56

时间:2016-07-09 09:51:22

标签: php url

如何像这样重写URL栏:

  

http://domain.com/news.php?post_id=56

进入

  

http://domain.com/news/post-56

2 个答案:

答案 0 :(得分:0)

需要在.htaccess文件中完成
有RewriteEngine这样的东西,代码看起来像那样

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news/([^/]+)/?$    news.php?post_id=$1 [NC,L]

在开始我们打开重写引擎时,前两个条件检查是否没有这样的文件或文件夹 - 在你的情况下新闻
然后我们重写输入我们系统中需要的内容< / p>

答案 1 :(得分:0)

您可以通过网址重写来完成。

网址重写要求服务器针对某些网址请求调用特定文件/脚本。

根据您的服务器运行的软件,您可能已经可以访问URL重写模块。如果没有,大多数主机会为您提供或安装相关模块,如果您非常好地询问它们。

Apache是​​运行URL重写的最简单系统。它通常带有自己的内置URL重写模块, mod_rewrite ,启用并使用mod_rewrite。

要做到这一点,

您需要先创建一个名为.htaccess的文本文档,以包含我们的规则。这将放在服务器的根目录中。那里可能已经存在.htaccess文件,在这种情况下我们应该编辑它而不是覆盖它。

现在您的.htaccess文件看起来像这样,

RewriteEngine On    # Turn on the rewriting engine
RewriteRule    ^news/post-([0-9]+)/?$    news.php?post_id=$1    [NC,L]    # Handling post requests

[NC,L] - 它们被称为标志,告诉Apache如何应用规则。在这种情况下,我们使用两个标志。 NC ,告诉Apache该规则应该不区分大小写,并且 L 告诉Apache如果使用此规则,则不再处理任何规则。

上方 RewriteRule 告诉Apache查找 news.php 文件,其中post-id传递新闻/帖子 - ([0-9] + )/ 网址。其中 [0-9] 表示任何数字值。

点击此处了解详情:https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/