2011-10-01 49 views
0

我不知道像这样的网址是如何产生的:http://www.example.com/Xj7hF没有索引文件的短网址?

这是我见过被许多网址缩短服务以及其他网站,理应不想在参数显示的URL数据的做法格式。

当然,他们不能将索引文件放在文件夹目的地/Xj7hF等重定向到实际的网址,所以我想知道这是如何完成的。

任何帮助将不胜感激!

(我使用Apache在Linux服务器上运行)。

回答

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 
+0

是啊,我只是通过'mod_rewrite'这里寻找 - http://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',但我没有前缀除了'/'? – Avicinnian

+0

你可能有这样的一些东西: –

+1

因此,重写规则(没有测试,只是在我头顶)将重定向/ xH7hJ到index.php?url = xH7hJ。然后,index.php脚本可以做任何需要做的事情。两个重写条件确保只有在请求的文件或目录不存在时才进行重写。 –

0

这就是所谓的URL rewriting,通常通过正确配置网络服务器来执行。 StackOverflow有severaltags为此,所以你应该能够找到更多的信息。