2011-10-01 76 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爲此,所以你應該能夠找到更多的信息。