【问题标题】:Short-urls without index files?没有索引文件的短网址?
【发布时间】:2011-10-01 23:24:31
【问题描述】:

我想知道这些网址是如何生成的:http://www.example.com/Xj7hF

这是我看到许多网址缩短器以及其他据称不想在网址中以参数格式显示数据的网站使用的做法。

当然,他们不能将索引文件放在目标文件夹/Xj7hF 等中,并重定向到实际的 url,所以我想知道这是怎么做到的。

任何帮助将不胜感激!

(我在带有 Apache 的 Linux 服务器上运行)。

【问题讨论】:

    标签: apache url


    【解决方案1】:

    不同的 Web 开发框架和 Web 服务器以不同的方式执行此操作,但最常见的可能是将 mod_rewrite 与 apache 一起使用。基本上,Web 服务器将请求发送到一种动态脚本语言(例如 PHP),该语言以这样一种方式重写,即脚本不需要知道原始请求 URI 的样子,客户端浏览器也不需要知道什么脚本实际处理了请求。

    例如,你会经常看到:

    http://something.com/123/

    这是对 /123 的请求,Apache 可能会根据用户配置 mod_rewrite 的方式将其重写为对 /my_script.php?id=123 的请求。

    (.htaccess 示例)

    # if the request is for a file or directory that
    # does not actually exist, serve index.php
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?url=$1
    

    【讨论】:

    • 啊,是的,我只是在这里查看mod_rewrite - corz.org/serv/tricks/htaccess2.php,但并不真正了解如何为 http://www.example.com/xH7hJhttp://www.example.com/goto/?url=xH7hJ 创建新的重写规则。有什么想法可以做到吗?我见过这个特殊的例子,它在抓取后获取所有内容并将其附加到重写的 url Options +FollowSymlinks RewriteEngine On RewriteRule ^grab /public/files/download/download.php,但除了/,我没有前缀?
    • 你可能有这样的想法:
    • 所以重写规则(没有测试,只是在我的脑海中)会将 /xH7hJ 重定向到 index.php?url=xH7hJ。然后 index.php 脚本可以做它需要做的任何事情。这两个重写条件确保仅在请求的文件或目录不存在时才进行重写。
    • 谢谢,我会在备用域上对此进行测试并报告! :)
    【解决方案2】:

    这称为URL rewriting,通常通过正确配置网络服务器来执行。 StackOverflow 对此有 several tags,因此您应该可以在那里找到更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      相关资源
      最近更新 更多