2012-09-30 92 views
2

我正在爲我的網站工作,乾淨的網址,我注意到,你在互聯網上找到的幾乎是重寫你的乾淨網址到你的服務器可以使用的網址。因此,像這樣:htaccess乾淨的URL的最佳方式是什麼?

www.domain.com/profile/username --> www.domain.com/profile.php?u=username 

RewriteEngine On 
RewriteRule ^profile/(.*)$ /profile.php?u=$1 [L] 

所以,現在有了這個,我要我的網站中鏈接到cleanurl的。但直觀地感覺,鏈接到「髒」網址會更加堅固/更好。因此,在這種情況下,您應該使用重寫規則來實現上述AND重定向規則,以將「髒網址」重新設置爲乾淨的網址,因此用戶始終只能在瀏覽器中看到乾淨的網址。

www.domain.com/profile.php?u=username --> www.domain.com/profile/username 

這是一件很好的事情。它是由網站完成的嗎?什麼是反對/贊成它的論據?

你怎麼做這樣的重定向。像下面的內容似乎不工作:

RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L] 

我是相當新的htaccess的,所以我可能會問的東西,這是顯而易見的......

回答

0
RewriteRule ^profile\.php?u=(.*)$ /profile/$1 [R=301, L] 

是行不通的因爲你無法匹配來自RewriteRule的查詢字符串(你的標誌中還有一個雜散空間)。您還希望與實際的請求匹配,而不是URI,因爲您只會從其他規則中產生重定向循環。

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /profile\.php\?u=([^&\ ]+) 
RewriteRule ^/?profile\.php$ /profile/%1 [R=301,L] 
+0

Oké,謝謝。但重寫網址並像這樣雙重重定向網址是一個好主意嗎? – Juvlius

+1

@Juvlius你這樣做,所以你無法控制的鏈接指向友好的。您在內容**中生成的鏈接必須是友好的。你希望所有暴露給互聯網的URL都是友好的。您希望重定向的唯一原因是指出任何不受您控制的舊鏈接(如Google索引漫遊器) –