2012-02-25 89 views
2

我期待能夠採取的URL使用的.htaccess縮短鏈接

www.mydomain.com/profile.php?user=THEUSERNAME 

,並把它改寫網址

www.mydomain.com/THEUSERNAME 

幾乎像Twitter。

我也希望能夠擁有它,我可以去

www.mydomain.com/THEUSERNAME 

,它會轉到用戶的頁面,而無需改變URL回長的URL。我不知道這是如何完成的,我也不知道它是否需要.htaccess,PHP或可能兩者。 請幫忙。


SOLOUTION FOUND


裏面.htaccess文件:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/\.]+)/?$ profile.php?user=$1 [L] 

而且你將需要給絕對 URL到所有的CSS和JS文件。例如,不要使用src =「css/main.css」,你必須把src =「http://yourdomain.com/css/main.css」。原因是因爲如果您的網址有反斜槓(即yourdomain.com/USERNAME/)比它認爲它位於下一個目錄中並且會導致衝突。絕對解決了CSS和JS問題。

在profile.php的<頭>:

不是這個:

<link href="css/allpage.css" rel="stylesheet" type="text/css" /> 

這:

<link href="http://yourdomain.com/css/allpage.css" rel="stylesheet" type="text/css" /> 

回答

2
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]+)/?$ /profile.php?name=$1 [L] 

這將工作,http://yoursite.com/username(有或沒有斜線)將重寫爲http://yoursite.com/profile.php?user=username

此外,您還必須使用/基於文件(對於<script><link>)或完整的URL,否則可能會出現一些404錯誤。我還建議你添加一個CDN,你可以推這個鏈接víaCDN,一個很好的是maxCDN - 40USD的第一個TERABYTE !.

祝你好運!

+0

你並不真的需要結尾的斜線,但你確實是需要確保它不是一個文件或目錄可能導致的問題。 – qsheets 2012-02-25 05:57:09

+0

啊,它造成了一些問題。它不工作,它導致我的文件出錯,無法讀取單獨目錄中的文件。這可能與使用離線服務器(測試服務器WAMP)有關,即使我以前在此服務器上使用過REWRITES,並且它們工作得很完美嗎? – 2012-02-25 07:33:05

+0

@ Q.Sheets這正是我的意思,你只需要添加一個?在重寫鏈接之前的$之前,這將會起作用,但這將是一件非常困難的事情。 – Luis 2012-02-25 14:24:28

1

試試這個

RewriteEngine on 
# we're working the document root 
RewriteBase/
# make sure requested item is not a file 
RewriteCond %{REQUEST_FILENAME} !-f 
# re-route everything that may be a username slug to the profile 
RewriteRule ^([^/]+)/?$ /profile.php?name=$1 [L] 
+0

儘管我可能會根據您的需要添加其他條件,但它的效果很好。 'RewriteCond%{REQUEST_FILENAME}!-d'確保請求不是目錄。 – qsheets 2012-02-25 15:03:58

+0

「不是目錄」只有在「目錄列表」處於活動狀態時纔有意義。這是你通常禁止的東西。 (這就是爲什麼我把它排除在外......) – rodneyrehm 2012-02-25 15:09:14

+0

謝謝你幫助我,但是我必須報告這是行不通的。它也給我一個「對象未找到」的錯誤,與上面的答案一樣的錯誤。我有一個完美的重寫(當你沒有結尾的斜線時),但是當後面的斜線出現時,它會導致CSS和JS錯誤(可能是因爲絕對文件位置)。所以這就是我尋找替代品的原因。感謝您花時間試圖解決我的麻煩,希望我們能解決這個問題。 – 2012-02-25 21:50:23