2015-07-28 2 views
0

Я пытаюсь создать некоторые перенаправления с моим файлом .htaccess, чтобы иметь дело с каким-то старым URL-адресом форума. Я хочу, чтобы перенаправления выполнялись в соответствии с параметрами PHP (идентификатор темы)..htaccess перенаправить в соответствии с параметрами PHP

Например, что-то вроде

RewriteEngine On 
RedirectPermanent /forum/viewtopic.php?t=123 /page1.html 
RedirectPermanent /forum/viewtopic.php?t=345 /page7.html 
RedirectPermanent /forum/viewtopic.php?t=89 /page3.html 

старый и новый URL не связаны друг с другом (без параметра PHP не должен быть или что-то). Я хочу решить вручную в моем файле .htaccess, что делать для каждого идентификатора темы.

Но я не могу так легко сделать это. Я много пробовал, но ничего не работает.

Возможно ли это? Есть идеи ?

Большое спасибо!

Редактировать: дополнительно вопрос: Я хочу добавить глобальное перенаправление всей папки/форума в корень сайта ("/"). Наверное, я могу разместить его после других, поэтому, если никакое другое правило не вступит в тройку, это будет сражаться.

Я пытаюсь кое-что, как

RewriteRule ^forum /? [L,R=301] 

Но все, что я пытался до сих пор перенаправляет меня в «page1.html» (мое первое правило). Любая идея почему? Большое спасибо !

ответ

1

Вы не можете соответствовать против строки запроса с использованием mod_alias-х Redirect, RedirectMatch и т.д. Вы должны использовать mod_rewrite и матч против %{QUERY_STRING} переменных:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^t=123$ 
RewriteRule ^forum/viewtopic\.php$ /page1.html? [L,R=301] 

RewriteCond %{QUERY_STRING} ^t=345$ 
RewriteRule ^forum/viewtopic\.php$ /page7.html? [L,R=301] 

RewriteCond %{QUERY_STRING} ^t=89$ 
RewriteRule ^forum/viewtopic\.php$ /page3.html? [L,R=301] 

Обратите внимание, что RewriteEngine является директивой mod_rewrite, не mod_alias , Таким образом, это не влияет на директивы RedirectPermanent.

+0

Я пытаюсь, но это не работает. Я получаю 404. Любая идея, почему? Большое спасибо ! – Jeremie

+0

@Jeremie does '/ page1.html' фактически есть? Если нет, тогда сервер вернет 404. –

+0

На самом деле это не файл page1.html, а статья Wordpress с URL-адресом, например/the-article-long-slug. И да, статья существует. Но ничего не меняется в адресной строке, и я получаю 404. – Jeremie

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