2013-06-06 73 views
0

經過多小時的研究這個網站(和谷歌),我決定我需要幫助,我遇到了這個問題。我在我的htaccess文件中使用了一段代碼,該代碼允許通過包含.php擴展名(如www.mysite.com/about.php)訪問url,從而完全不使用斜槓(像這個www.mysite.com/about),或者在最後添加一個斜槓代替擴展名(如www.mysite.com/about/)。掙扎着「乾淨的網址」

讓零件精美地工作。然而,在頁面加載後,地址欄中是否仍然顯示.php擴展名,無論用戶輸入了與否。到目前爲止,我對它現在所做的事情非常滿意,但我真的希望能夠隱藏擴展名,甚至可以在最後加上一個斜線,並且因爲某些原因,我沒有做什麼在這方面工作。希望這有一些意義。

我目前在我的htaccess文件中有這個。

RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^([^/]+)/$ http://mysite.com/test-server/$1.php 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
    RewriteRule (.*)$ http://mysite.com/test-server/$1/ [R=301,L] 

回答

0

這實際上是一種糟糕的方法,因爲您的內容可以通過多個URL訪問。要麼強制擴展或不要。

我更喜歡無擴展的URL,因爲我想切換技術堆棧(即Rails)的一些離奇原因。我沒有在我的URL末尾卡住「.php」。

爲了達到這個目的,你可以在最後重寫一個帶有「.php」腳本的擴展請求。在下面的的.htaccess文件地方:

RewriteEngine on 

# redirect to extension-less URL if requested 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+ 
RewriteRule ^(.+)\.php $1 [R=301,L] 
+0

由於某些原因,這對我不起作用,儘管我可能弄錯了文件擴展名部分。我試圖讓我的測試網站文件夾工作。 – bobs

+0

您的測試網站文件夾在哪裏,您的**。htaccess **文件中是否有其他'RewriteRules'? –

+0

它遵循我在示例代碼中使用的結構。我甚至在我的投資組合網站的根級嘗試過它,但它仍然無法正常工作。 – bobs

0

我還發現,在去除擴展爲我的作品非常好這段代碼,但我只帶了它在根一級工作至今。我希望能夠對我的測試網站中的不同目錄進行修改,因爲url結構對於此特定項目非常重要。但是,當我這樣做時,只有錯誤。

AddType text/x-component .htc 
RewriteEngine On 
RewriteBase/
# remove .php; use THE_REQUEST to prevent infinite loops 
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP 
RewriteRule (.*)\.php$ $1 [R=301] 
# remove index 
RewriteRule (.*)/index$ $1/ [R=301] 
# remove slash if not directory 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /$ 
RewriteRule (.*)/ $1 [R=301] 
# add .php to access file, but don't redirect 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) $1\.php [L]