制作干净的URL并检索查询字符串

时间:2011-12-06 01:56:15

标签: php apache seo sitemap

有没有办法在设置我的网站时将/forums/(forumID)/等php代码中的相对URL插入标签?然后,当我试图获取当前页面的哪个forumID时,通过$_GET请求获取它而不使用Smarty,CakePHP等模板系统或Apache重写模块?还是头疼?我只是希望能够不被绑定到一个Web服务器类型(Apache)。

3 个答案:

答案 0 :(得分:4)

清洁网址相当容易,但如果网页差异很大,可能会导致一些问题。

您需要编辑.htaccess文件并添加与此类似的内容

RewriteEngine On

RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1
#This will process http://example.com/forum as http://example.com/index.php?page=forum

RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1
#This includes the trailing slash

RewriteRule ^([a-zA-Z0-9]+)/([a-zA-Z0-9]+)$ index.php?page=$1&id=$2
#This will process http://example.com/forum/512 as http://example.com/index.php?page=forum&id=512

这是获取更多信息http://www.desiquintans.com/cleanurls

的良好来源

答案 1 :(得分:2)

...来自OP评论。

这些框架再次以各自的语言读取请求,以允许框架路由到特定的控制器,但是他们仍然需要设置Web服务器以便首先将请求发送到框架。

  • 客户请求http://example.com/forums/123
  • DNS查询后,请求命中服务器127.0.0.1:80
  • Webserver(例如Apache)侦听端口80并接受请求
  • Apache将请求路由到服务器端脚本

这是Web服务器看到的旅程。它需要在它甚至命中服务器端脚本语言(PHP / Python / Ruby等)之前读取请求。

一旦网络服务器随意点击前端控制器,服务器端语言就可以重新读取URL。

答案 2 :(得分:1)

从架构的角度来看,拥有干净网址的主要原因是:

  • 它们与任何编程语言无关。如果您有.php或任何其他扩展程序,则必须将服务器设置为接受.php扩展名其他语言,如果你切换到ASP.net。
  • 它们很容易在任何语言或服务器设置中路由。我所知道的所有现代服务器都有模块来路由网址。

请注意,要使用编程语言来路由网址,您仍需要设置服务器以将所有内容定向到引导程序文件。老实说,无论如何,你都无法获得某种服务器配置。

结论:如果不进行某些服务器设置,您希望以这种方式设置项目的逻辑将无效。