2014-09-30 68 views
1

我試圖重寫,像這樣通過以下網址後(%2F/):WordPress的URL重寫 - URL的一部分現有頁面

/archives/JHW 
-> /archives?RefNo=JHW 

/archives/JHW/1/1 
-> /archives?RefNo=JHW%2F1%2F1 

/archives 
-> no redirect 

的想法是讓網址好看,但隨後能夠從/archives頁面獲取$_GET['RefNo']的剩餘路徑,該頁面已存在as a page。到目前爲止,我得到了:

RewriteRule ^archives/(.+)/? /index.php/archives/?RefNo=$1 [QSA,L] 

但是,這似乎並沒有工作。

我一直是這樣的代碼將它添加我functions.php裏面我的主題:

add_rewrite_rule(
    'archives/(.+)/?', 
    'index.php/archives?RefNo=$1', 
    'top' 
); 

,然後去了Permalinks頁面/wp-admin使其再生.htaccess文件。當我看着.htaccess這條規則就在那裏時,它就像我所期待的那樣沒有踢進去。

我哪裏錯了?


更新

我現在.htaccess文件是:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteRule ^archives/(.+)/? /index.php/archives/?RefNo=$1 [QSA,L] 
    RewriteRule ^index\.php$ - [L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . /index.php [L] 
</IfModule> 
+0

你可以發佈你目前的Wordpress'htaccess嗎?另外,由於你說它是一個現有的頁面,在哪裏定義了'/ archives'? – 2014-10-01 09:00:16

+0

它的字面意思是[一個現有的頁面](http://grab.by/APRE) - 我已經用當前的htaccess更新了這個問題 – Joe 2014-10-01 09:03:55

+0

好的。但你的規則呢?你正在嘗試重寫'/index.php/archives/?RefNo = XXX'(通過Wordpress),並且在你提到的問題的開頭提到'/ archives?RefNo = XXX'。哪一個是使用的? – 2014-10-01 09:06:06

回答

0

我已經偶然發現一個可能的解決方案是這樣的(內部主題的functions.php):

function archives_page_rewrites() { 
    add_rewrite_tag('%RefNo%', '([^&]+)'); 
    add_rewrite_rule(
     '^archives/(.*)/?$', 
     'index.php?pagename=archives&RefNo=$matches[1]', 
     'top' 
    ); 
} 
add_action('init', 'archives_page_rewrites'); 

我願意相信還有其他方法可以做到這一點,而這可能是也可能不是最好的解決方案。如果在良好實踐方面是好的/不好的話,請隨意上/下。