我如何在PHP中进行URL重写?

fms*_*msf 1 html php url-rewriting

这是一个双重问题:正确答案将转到"如何在PHP中执行",解释是否有任何优势,如果可能的话也会计算.

我只是好奇,因为我真的不知道,我在网页上看到了很多.

编辑:我不知道技术名称,但是例如在Stackoverflow上:" http://stackoverflow.com/posts/edit/522452"我的意思是"文件夹"(以前在问题标题中使用的术语).

Ben*_*ank 6

如果您指的是/posts/edit/522452样式的URL而不是/posts.asp?action=edit&postid=522452样式的URL(或者它在后端转换的任何内容),这通常是通过URL重写器完成的,例如mod_rewrite.该URL的规则可能如下所示:

RewriteRule ^/posts/(\w+)/(\d+) /posts.asp?action=\1&postid=\2
Run Code Online (Sandbox Code Playgroud)

这种URL的两个主要优点是:

  1. "文件夹"类型的网址更易于人们输入和记忆.
  2. 页面"看起来像"到HTTP代理的页面.传统上,代理不会使用参数缓存页面,因为它们不代表单独的内容并且过于频繁地更改(想想搜索结果).使用"文件夹式"URL可以正常缓存它们.

在PHP中,您可以通过$_GET['action']和访问这些选项$_GET['postid'],就像浏览器要求重写的表单一样.