URL重写如Stackoverflow,XenForo,IPBoard

时间:2014-03-07 00:49:29

标签: php .htaccess mod-rewrite rewrite

我想知道网址是如何重写的,比如这个网站是如何运作的。我的意思是我不认为它是通过。 apache或nginx中的modrewrite。我感兴趣的是一个id和用户友好的标题。如果服务器只输入id或带有错误标题的id,它是如何工作的,它会将它重写为右边的那个?

是否有任何关于它的内容我找不到或者你能用一个小例子为我解释一下吗?

例如:

-index.php
|--index.php?page=2
-server.php?id=45343
-contact.php



-example.com/
|--example.com/page/2
-example.com/server/45343/some-random-title-to-be-user-friendly(.html)
-example.com/contact(.html)

更新

我想知道如何在没有modrewrite(htaccess ..)的情况下工作,因为我知道,例如xenforo没有使用它。

1 个答案:

答案 0 :(得分:0)

我不确定这是否就是在StackOverflow上完成的方式(可能是这样),但我有类似的代码工作。

基本上,您在URL中看到的所有目录(questions / 22239304 / title)都不存在,它们是虚拟的。根目录中的.htaccess文件重写对PHP文件的所有访问权限,然后决定如何处理它。 URL中最重要的部分是ID - 如果它具有ID,它还具有数据库条目并且可以获得正确的标题。如果URL中的内容不正确,则可以直接重定向,如果没有,则为页面提供服务。

以下是一个示例.htaccess,它将所有流量重定向到index.php(可能希望更具体,例如,规则只匹配其中包含“问题”的网址):

RewriteEngine On

RewriteRule ^redir.php$ redir.php [L,QSA]
RewriteRule ^(.*)$ redir.php?q=$0 [L,QSA]

然后在redir.php文件中,你会看到$ _SERVER [“QUERY_STRING”]并正确解析它。