2016-03-25 69 views
0

自定義後類型的鏈接我已經創建了一個自定義後的類型和爲此自定義職位類型我有事務所頁面這樣 http://example.com/?custom_post=titlehereWordPress的add_rewrite_rule:與子域

我該如何重寫這個URL(與add_rewrite_rule)成像

http://titlehere.example.com

鏈接到目前爲止,我有這個代碼

function custom_rewrite_basic() { 
    add_rewrite_rule('^http://[\w.-]+\.example.com?', 'custom_post=$matches[1]', 'top'); 
} 
add_action('init', 'custom_rewrite_basic'); 

我寫的正則表達式錯了嗎?

回答

1

是的,如果你看看This Demo,你可以看到//帶下劃線。這是因爲他們沒有逃脫。他們應該這樣選擇,\/\/

這裏是你應該使用正則表達式:

^http:\/\/[\w.-]+\.example.com? 

Live Demo on RegExr

而且,我不知道,如果你想選擇?,因爲目前它使mcom可選,但如果你確實需要像這樣逃脫它,\?。然而,這將選擇http://foo.example.com?something,如果你想選擇http://foo.example.com/?something,使用下面的正則表達式:

^http:\/\/[\w.-]+\.example.com\/\? 

注意,使用我上面指定的任何正則表達式可能仍然無法正常工作。 $matches[1]選擇RegEx中的第一個匹配項,但您沒有捕獲組。我會建議使用以下全碼:

function custom_rewrite_basic() { 
    add_rewrite_rule('^http:\/\/([\w.-]+)\.example.com\/?', 'custom_post=$matches[1]', 'top'); 
} 
add_action('init', 'custom_rewrite_basic'); 
+0

感謝您的回答,但仍然沒有工作:代碼add_rewrite_rule('^ HTTP:\/\/[\ w .-] + \ example.com ?/ g','custom_post = $ matches [1]','top'); – Crerem

+0

@ user1548981看到我的編輯,你忘了包括一個捕獲組,所以'$ matches [1]'**不存在!** – Druzion

+0

再次感謝。仍然沒有工作,但我不認爲正則表達式是這次責備。我在這裏看到http://regexr.com/3d3an找到匹配。代碼是add_rewrite_rule('^ http:\/\ /([\ w .-] +)\。example.com \ /?','custom_post = $ matches [1]','top'); – Crerem