2013-01-08 24 views
3

我一直想知道很長一段時間人們如何設法讓他們的URL在沒有文件擴展名的情況下工作,如'.html'或'.apsx'。如何在沒有任何文件擴展名的情況下獲得用戶友好的URL?

看看這個網站,例如:

http://www.axongarside.com/Communication 
http://www.axongarside.com/Communication/Compleat 
http://www.axongarside.com/Brand 
http://www.axongarside.com/Brand/K3-Group 

他們是如何做到了這一點?我能想到的唯一方法是爲每個頁面創建一個新目錄,並在每個目錄中都有一個索引頁面,但這對於較大的網站來說是一個巨大的麻煩。有沒有其他方法?

三江源

+2

Url重寫,ASP.NET路由等你使用什麼樣的軟件爲您的網絡服務器,應用程序等? – Onkelborg

+1

URL重寫 - http://en.wikipedia.org/wiki/Rewrite_engine –

+1

使用URL重寫模塊,檢查這個問題:http:// stackoverflow。com/questions/3039166/make-friendly-url-in-asp-net –

回答

4

最常見的三種方式是:

  • 使用索引頁(即只需要創建一個目錄,並把一個index.html文件的話)。
  • 使用重寫引擎(例如Apache的mod_rewrite)將URL映射到不同的文件上(這是PHP-land中的常用方法)。
  • 使用前端控制器腳本爲您處理URL(這是MVC框架的常用方法)。

後一種方法會使用這樣的事情在Apache服務器的配置:

WSGIDaemonProcess example processes=2 threads=15 display-name=%{GROUP} 
WSGIProcessGroup example 
WSGIScriptAlias//hosts/example.com/application/wsgi.py 

SetHandler fcgid-script 
Alias//hosts/example/application.fcgi/ 

對於使用WSGI(Python)或FastCGI的(跨語言的腳本,那特別的例子是分別從我寫的Perl應用程序中分離出來的)。

URL格式將由腳本本身處理,不同的框架採用不同的方法解決問題。

在Catalyst中,這由providing attributes to subroutine names完成。舞蹈家有自己的route handler syntax

Web ::簡單用途subroutine prototypes

Django使用a separate file containing a list of patterns

2

如果您使用的是Apache,你可以使用.htaccess文件刪除.html擴展名,像這樣:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.html$ /$1 [L,R=301] 

要刪除網址.html擴展名只是鏈接到頁面沒有.html

<a href="http://www.mysite.com/page">linkhere</a> 
1

如果您使用的是Apache HTTP Server,您應該檢查mod_rewrite的能力。 IIS也具有類似的URL重寫功能。

相關問題