【发布时间】:2011-10-01 23:24:31
【问题描述】:
我想知道这些网址是如何生成的:http://www.example.com/Xj7hF
这是我看到许多网址缩短器以及其他据称不想在网址中以参数格式显示数据的网站使用的做法。
当然,他们不能将索引文件放在目标文件夹/Xj7hF 等中,并重定向到实际的 url,所以我想知道这是怎么做到的。
任何帮助将不胜感激!
(我在带有 Apache 的 Linux 服务器上运行)。
【问题讨论】:
我想知道这些网址是如何生成的:http://www.example.com/Xj7hF
这是我看到许多网址缩短器以及其他据称不想在网址中以参数格式显示数据的网站使用的做法。
当然,他们不能将索引文件放在目标文件夹/Xj7hF 等中,并重定向到实际的 url,所以我想知道这是怎么做到的。
任何帮助将不胜感激!
(我在带有 Apache 的 Linux 服务器上运行)。
【问题讨论】:
不同的 Web 开发框架和 Web 服务器以不同的方式执行此操作,但最常见的可能是将 mod_rewrite 与 apache 一起使用。基本上,Web 服务器将请求发送到一种动态脚本语言(例如 PHP),该语言以这样一种方式重写,即脚本不需要知道原始请求 URI 的样子,客户端浏览器也不需要知道什么脚本实际处理了请求。
例如,你会经常看到:
这是对 /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/xH7hJ 到 http://www.example.com/goto/?url=xH7hJ 创建新的重写规则。有什么想法可以做到吗?我见过这个特殊的例子,它在抓取后获取所有内容并将其附加到重写的 url Options +FollowSymlinks RewriteEngine On RewriteRule ^grab /public/files/download/download.php,但除了/,我没有前缀?
这称为URL rewriting,通常通过正确配置网络服务器来执行。 StackOverflow 对此有 several tags,因此您应该可以在那里找到更多信息。
【讨论】: