2010-11-28 62 views
1

尋找更多用戶友好的URL,我如何實現以下兩種,只使用.htaccess優雅?URL使用.htaccess美化

/DE/SomePage的
/somepage?ln=de

/ZH-CN/SomePage的#7
/somepage?ln=zh-CN#7

摘要:
/[語言]/[pagefilenameWithoutExtension ] [可選錨點號碼] [0-9的數字]

應該加載(不改變URL)
/[pagefilenameWithoutExtension] LN = [語言] [可選錨#] [從一個數0-9]

UPDATE,提供後溶液: 1.例外/ ZH-CN/SomePage的應該可以訪問作爲/ CN/SomePage的 2. PHP生成縮略圖現在不加載了像:
IMG SRC =「imgcpu SRC = someimage.jpg & W = 25 & H = 25 & C = f & f = bw「

+0

請注意,您將不會收到該#7組件您的腳本中的網址。散列之後的URI部分僅是客戶端元素,並不會傳遞給服務器端。 – Orbling 2010-11-29 00:13:39

回答

3
RewriteRule ^([a-z][a-z](-[A-Z][A-Z])?)/(.*) /$3?ln=$1 [L] 

您不需要爲碎片做任何事情(例如:#7)。它們不被髮送到服務器。他們完全由瀏覽器處理。

更新: 如果你真的要正確對待ZH-CN作爲一個特殊的情況下,你可以這樣做:

RewriteRule ^zh-CN/(.*) /$1?ln=zh-CN [L] 
RewriteRule ^cn/(.*) /$1?ln=zh-CN [L] 
RewriteRule ^([a-z][a-z])/(.*) /$2?ln=$1 [L] 
0

我會建議st以下 -

RewriteEngine on 
RewriteRule ^([a-z][a-z])/([a-zA-Z]+) /$2?ln=$1 
RewriteRule ^([a-z][a-z])/([a-zA-Z]+#([0-9])+) /$2?ln=$1$3 

第一條規則處理/ de/somepage之類的URL。該語言的長度必須爲兩個字符 ,並且必須只包含一個至z字符。

第二條規則處理像/ uk/somepage#7這樣的URL。

+0

請注意,您不需要哈希(#)部分,這是客戶端唯一的URI功能,並且永遠不會發送到服務器。 – Orbling 2010-11-29 00:12:53

+0

一小時內有兩個英雄。爲什麼我不能在這兩個名字上加上V,因爲你的答案都是正確的! – Sam 2010-11-29 00:16:51