2009-09-10 30 views
0

快速。足夠替換/在URL中

我使用國防部重寫,並有最置換到位:

  • 空白 = _
  • æ = ae
  • Æ = ae

等。

什麼是/的自然替換字符?

感謝

回答

2

下劃線被認爲是一個單詞字符,所以foo_bar是一個單詞而不是兩個單詞。但連字符不被視爲單詞字符,所以foo-bar是兩個單詞。

因此,無論您想要將兩個部分分開,無論您想要將兩個部分分開,還是要將下劃線_分開,您都應該使用hyper -。在用於分開的/的情況下,我寧願提醒-

+0

問題是炒作( - )是這樣使用的:「大球 - 超級運動」。所以它會與此相沖突。 – Cudos 2009-09-10 11:42:11

+0

@Cudos:​​所以你轉換到這一點'Big_ball _-_ supersports'?爲什麼不進入「大球超級運動」? – Gumbo 2009-09-10 11:49:19

+0

因爲我使用php來搜索數據庫中的名稱。所以每個角色必須轉換回原始角色,否則不會找到匹配的角色。 – Cudos 2009-09-10 12:22:10

0

我會用一個破折號 - 作爲谷歌的搜索引擎優化的目的,甚至下劃線分開這樣的話_因爲這些都是知府可讀性。

+0

問題是連字符( - )用於這樣的:「大球 - 超級運動」。所以它會與此相沖突。 – Cudos 2009-09-10 12:09:07

1
  • AE = AE

你不一定需要做到這一點。您可以將非ASCII ASCII字符像UTF-8編碼的字節一樣放在URL中。所以:

http://en.wikipedia.org/wiki/%C3%86 

顯示在瀏覽器爲:

http://en.wikipedia.org/wiki/Æ 

,要麼可以粘貼到地址欄。

空格和斜線可以編碼爲%20和%2F。但是,這些表單在瀏覽器中仍以百分比表示,因爲它們是保留字符。所以他們看起來不太漂亮。 %2F存在一個額外的問題,那就是基於CGI的傳統腳本環境無法讀取它們,默認情況下,Apache會故意阻止它們來阻止這些腳本變得混亂並留下安全漏洞。

因此,我通過完全除去使標題蛞蝓:

# % ' () ? [ ] (U+00AD soft hyphen) 

與任何控制字符沿(U + 0000,除了U + 00A0 U + 001F,和U + 007F到U + 00BF)。然後替換任何運行:

" $ & * + ,/: ; <=> @ \^(U+0020 space) (U+000A newline) 

單下劃線。這消除了%xx序列出現在URL中的必要性。 (對於Unicode字符,仍然會有%xx序列,但用戶不會看到它們。)

,如果你願意的話,無論是漂亮您可以使用連字符,而不是下劃線。搜索引擎應該沒問題。其他答案

ETA再評論:

因爲我使用PHP來搜索我的數據庫的名稱。所以每個角色必須轉換回原始角色,否則不會找到匹配的角色。

在這種情況下,你不能做任何不可恢復的字符,但。您不能將'Æ'更改爲'ae',空格必須編碼爲'%20'並且斜線爲'%2F'。這將導致略微醜陋的URL,並且'%2F'會給你在Apache和IIS上的部署問題。

如果您需要在標題僅鍵入你需要在處理廢料添加(唯一索引)列以查找,如上建議。但請注意,您不能重命名/更正頁面標題,因爲它會更改slug,破壞URL。

一種常見的方法來解決這個問題是包括除了蛞蝓一個數字ID(參見,例如,如何SO做它)。你也可以301-重定向的地方,爲最佳搜索引擎優化seo名稱是錯誤的。