2013-04-20 53 views
2

有時,當我看一個網站的網址,它會說這樣的事情爲什麼有些網站在其文件擴展名末尾不顯示.php文件?

www.website.com/index.php

而其他時候它會看起來像這樣

www.website.com/index/

爲什麼第二個URL沒有.php或.html擴展名?

+4

通常通過「URL重寫」進行調用和實現。 Google for ['mod_rewrite'](http://stackoverflow.com/tags/mod-rewrite/info)和'RewriteRule's。儘管在這種情況下/例如它可能只是利用'MultiViews'和'PATH_INFO'。 – mario 2013-04-20 01:11:34

+1

@mario爲什麼不把它作爲答案?如果有更多的解釋,會完全符合要求。 – 2013-04-20 01:12:25

+1

使用mod_rewrite,所有傳入的請求都可以被轉發到一個PHP處理腳本,比如index.php,然後解釋url路徑和查詢字符串,調用其他腳本並生成動態響應。許多框架都以這種方式工作,所以應用程序中有一個入口點,可以在不重複的情況下進行初始化和配置。 – kufudo 2013-04-20 01:13:15

回答

5

在常配置的Web服務器,

www.website.com/index.php 

告訴它從根目錄目錄中加載index.php文件。這

www.website.com/index/ 

告訴它在/索引/目錄中查找匹配什麼是在的DirectoryIndex配置指令列在服務器的的httpd.conf文件或在的.htaccess文件文件放在網站的webroot目錄中(有關詳細信息,請參閱http://httpd.apache.org/docs/2.2/mod/mod_dir.html#directoryindex)。

樣本配置指令應該是這樣的:

DirectoryIndex index.php index.html default.html default.htm 

這將告訴web服務器,當沒有給出文件名,在當前目錄尋找一個的index.php文件,如果找不到index.html文件,如果找不到default.html文件等等就行了。

如果你希望能夠在不必有.PHP他們結束運行PHP文件時,你會設置一個默認的處理程序配置文件(httpd.conf文件或.htaccess)是否如:

ForceType application/x-httpd-php 

這將告訴Apache來處理所有文件作爲PHP是否有.PHP延長與否。 (請參閱http://httpd.apache.org/docs/2.2/mod/core.html#forcetype

如果您願意,也可以使用ModRewrite重新映射URL,但ModRewrite指令可能會造成混淆並且難以排除故障。

+1

謝謝!這是很棒的信息,非常有見地。我會給你一個upvote,但不幸我還沒有代表,但我會給你答案標記!感謝您花時間寫出解釋。 – CatFoodFight 2013-04-20 01:37:55

相關問題