2011-09-11 54 views
1

- 我使用了許多WordPress重寫規則,以允許在URL路徑開頭立即注入國家代碼,確定時區偏移量。一個例子:WordPress:通過URL重寫覆蓋或繞過自定義帖子類型的重定向規則

add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]&post_type=days','top'); 

這需要像www.daysoftheyear.com/days/2011/的請求(其通常將返回該請求的所有有效含量),並且允許,例如,www.daysoftheyear.com/us/days/2011 /返回相同的內容,但支持基於國家/地區代碼的時區偏移。

在幾乎所有地方都能正常工作,除了單個查詢類型 - 一個用於'天'自定義帖子類型頁面,例如http://www.daysoftheyear.com/days/waffle-day/

我已經制定的規則是:

add_rewrite_rule('^([A-Za-z]{2})/?$', 'index.php?geo=$matches[1]','top'); 
add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]&post_type=days','top'); 
add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]$matches[3]&post_type=days','top'); 
add_rewrite_rule('^([A-Za-z]{2})/days/([0-9]+)/([0-9]+)/([0-9]+)/?$', 'index.php?geo=$matches[1]&m=$matches[2]$matches[3]$matches[4]&post_type=days','top'); 
add_rewrite_rule('^([A-Za-z]{2})/days/([A-Za-z\-].*)/?$', 'index.php?geo=$matches[1]&page=$matches[2]','top'); 
add_rewrite_rule('^([A-Za-z]{2})/([A-Za-z\-].*)/?$', 'index.php?geo=$matches[1]&pagename=$matches[2]','top'); 

第五規則768,16在幾乎相同的方式如上匹配http://www.daysoftheyear.com/gb/days/waffle-day/,但重定向 - 我懷疑它與嘗試重定向到內置的規則confliucting如果格式不正確(例如,如果我輸入與正確的URL相近的結構匹配,它會將我重定向到正確的資源)。

我可以確認此請求的'原始'網址有效 - 例如,http://www.daysoftheyear.com/index.php?geo=en&name=soup-month&post_type=days返回有效的和預期的結果。

我不相信這是一個正則表達式規則,而不是WP管理自定義帖子類型的具體挑戰?

編輯

更新,以便連字符 - 行爲沒有改變,雖然regexpal報道說,正則表達式的工作對例如URL。

更新禁用WP規範重定向功能後 - 現在404'而不是301'到頁面。

更新爲使用'page'而不是'pagename',根據此處的信息:http://codex.wordpress.org/Class_Reference/WP_Query#Post_.26_Page_Parameters - 行爲沒有變化。

更新的代碼,添加了一個換行符,並澄清說,實際上,我引用線5條,而不是第4行

+0

在你的規則列表中,你有2次對第3行的'add_rewrite_rule'的調用 - 這是否意味着「第四條規則」是第三行的第二條規則或第4行的規則? – Robin

+0

粘貼錯字,抱歉。通過將雙重規則分成兩行來澄清。我正在參考,其實,第5行。 –

回答

0

已解決;看來上述規則集現在可以正常工作 - 謝謝大家!

1

這一要求,因爲你並沒有讓-http://www.daysoftheyear.com/days/waffle-day/不會將您的第四條規則匹配小組成員:([A-Za-z].*)。將此組替換爲([A-Za-z\-].*),它應該匹配。
HTH

+0

好點,謝謝!但是,這似乎沒有解決問題。懷疑我仍然與與重定向邏輯相關的東西發生衝突? –