2016-11-20 61 views
-1

例如:重寫規則 - 只是想知道這是可能的嗎?

我想用不同的分類變量創建一個url。還有一個命令。第一個變量是蔬菜({variable01}),第二個是水果({variable02}),第三個是樹木({variable03})等。

xxx.com/ {variable01}-{variable02}-{variable03}- {variable04} -......

是的,我得到了這個URL。

如果什麼變量有兩個詞(或三個),我想的分隔符也是連字符(布魯塞爾豆芽)?

實施例:

xxx.com/brussels-sprouts-{variable02} - {variable03} - {variable04} -......

xxx.com/ { variable02} - 綠色 - {Apple蘋果} variable03 - {} variable04 -......

xxx.com/ 布魯塞爾豆芽 - 綠蘋果

這怎麼可能?

謝謝。

+0

一個CMS(像'Drupal')爲您生成的網址,而不是'Apache'。通過使用'.htaccess'你可以添加規則來處理這些URL。 – 2016-11-20 10:47:17

+1

伊戈爾謝謝你的回覆。我知道。 Wordpress給了我漂亮的網址。謝謝wordpress。 但wordpress使用/我想 - 我正在改寫WordPress的網址結構。 有可能使xxx.com/brussels-sprouts/green-apple 但我想xxx.com/brussels-sprouts-green-apple –

回答

0

無法再指定變量的邊界,所以只有當您知道變量的確切數量並且只有一個變量可能包含連字符時纔有可能。您可以創建一個正則表達式:

第一個變量:

^([\w-]+)-(\w+)-(\w+)-(\w+)$ 

第二個變量:

^(\w+)-([\w-]+)-(\w+)-(\w+)$ 

但是:,如果你知道,每個變量最多有1連字符,你也可以這樣做:

/var1-foo1-var2-foo2-var3-foo3-var4

RewriteRule ^(\w+(-\w+)?)-(\w+(-\w+)?)-(\w+(-\w+)?)-(\w+(-\w+)?)$ index.php?var1=$1&var2=$3&var3=$5&var4=$7 [L] 

導致:

array (
    'var1' => 'var1-foo1', 
    'var2' => 'var2-foo2', 
    'var3' => 'var3-foo3', 
    'var4' => 'var4', 
) 
+0

這很接近。但是有時這些變量可能有3個連字符或更多。太難處理所有這一切。但是這是我想要的。還有一步所有的網址必須有並且結束文本:D xxx.com/brussels-sprouts-green-app--{variable03}-{variable04}-...-uncle-joe -uncle-joe has a連字符並且是所有生成網址的最後部分。可能嗎? –

+0

是的,同樣的原則,只需要將相同的正則表達式部分追加到最後,即使您不需要它作爲變量。 – JonathanStevens

+0

我建議在你的情況下使用/作爲變量分隔符,除非你有特定的理由不這樣做? – JonathanStevens