【问题标题】:URL Rewrite like Stackoverflow, XenForo, IPBoard [duplicate]URL 重写,如 Stackoverflow、XenForo、IPBoard [重复]
【发布时间】:2014-04-09 23:07:38
【问题描述】:

我想知道例如这个网站的 url 重写是如何工作的。我的意思是我不认为它是通过完成的。在 apache 或 nginx 中进行 modrewrite。我感兴趣的是 id 和用户友好的标题。如果服务器只输入 id 或标题错误的 id,它是如何工作的,它 301 将其重写为正确的?

有什么我找不到的方法吗?或者你能用一个小例子为我解释一下吗?

例如:

-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 没有使用它。

【问题讨论】:

    标签: php .htaccess mod-rewrite rewrite


    【解决方案1】:

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

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

    这是一个将所有流量重定向到 index.php 的示例 .htaccess(可能希望更具体,例如,具有仅匹配带有“问题”的 URL 的规则):

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

    然后在 redir.php 文件中,您将查看 $_SERVER["QUERY_STRING"] 并对其进行适当的解析。

    【讨论】:

    • 嗯。我想知道没有 modrewrite 是如何工作的,我确定 xenforo 和 IPBoard 没有在 htaccess 中使用任何 modrewrite。也许 stackoverflow 是一个不好的例子。 :(
    • xenforo.com/help/friendly-urls 在我看来他们确实使用 .htaccess。如果没有,那么它们只是具有相同的“友好 URL”,只是直接传递给 php 文件。例如。 index.php?question/111/blah
    • 好的,如果您输入任何不同的 url 但具有相同的 id,您会被重定向到正确的,它是如何工作的? http://www.example.com/threads/its-fun-to-change-this.12345/ -> http://www.example.com/threads/thread-title-here.12345/
    • 正如我在回答中所写的,ID 号是最重要的位。通常,所有“好 URL”的东西都有它们,或者与帖子同样独特的东西。因此,如果它在 URL 中具有正确的 ID 号,它会将实际上可读的其余部分与基于帖子标题或其他内容的内容进行比较。如果匹配,它会为页面提供服务,如果不匹配,它会执行 301 标头重定向,并且浏览器会在那里导航。
    • 是的。 header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.example.com/".$url); ?>
    猜你喜欢
    • 2023-03-09
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多