2014-09-30 2 views
1

Я пытаюсь переписать следующие URL-адреса, как так (%2F является /):Wordpress URL переписывания - часть URL после существующей страницы

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

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

/archives 
-> no redirect 

Идея заключается в том, чтобы получить URL, смотрится хорошо, но потом иметь возможность захватить остальную часть пути только с $_GET['RefNo'] с страницы /archives, которая уже существует 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, правило там, оно просто не ногами, как я ожидаю.

Куда я иду не так?


Update

Мой текущий .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

Не могли бы вы опубликовать текущий htaccess Wordpress? Кроме того, где определено '/ archives', так как вы сказали, что это существующая страница? –

+0

Это буквально [существующая страница] (http://grab.by/APRE). Я обновил вопрос с помощью текущего htaccess. – Joe

+0

Хорошо. Но как насчет вашего правила? Вы пытаетесь переписать на '/index.php/archives/? RefNo = XXX' (передача Wordpress), а в начале вашего вопроса вы говорили о'/archives? RefNo = XXX'. Какой из них использовать? –

ответ

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'); 

Я желаю полагать, что есть другие способы сделать это, и что это может быть или не быть лучшим решением. Не стесняйтесь поднимать/опускать это на основе, если это хорошо/плохо с точки зрения хорошей практики.

Смежные вопросы