2014-01-04 3 views
0

Все еще работают на моем Joomla 2.5-сайте, теперь я понял, старые ссылки на Google и на других сайтах я хотел бы 301 рерайт:Перенаправление старых ссылок с параметрами по .htaccess

http://www.my-site.com/index.php?p=26 

, чтобы привести к

http://www.my-site.com/new-link.html 

Я попытался

RewriteRule ^index.php?p=26$ /new-link.html [L,R=301] 

, но это не сработало.

Я хотел бы добавить, что мне нужны конкретные перезаписи, например. index.php? p = 26 -> new-link.html, ... p = 99 -> another-link.html и т. д.

ответ

1

Нет, это не сработает, поскольку вы не можете выполнить QUERY_STRING в RewriteRule.

Попробуйте это правило:

RewriteCond %{THE_REQUEST} \s/+index\.php\?p=([^\s&]+) [NC] 
RewriteRule^/new-link.html? [L,R=301] 

EDIT:

правила Пишущие конкретные идентификаторы:

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?p=26(?:&|\s) [NC] 
RewriteRule^/new-link.html? [L,R=301] 

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?p=12345(?:&|\s) [NC] 
RewriteRule^/another-link.html? [L,R=301] 
+0

Я не могу читать, но это, кажется, было бы переписать 'р = 26', 'p = 99',' p = 12345' на '/ new-link.html'? Мне нужны те, которые были переписаны на разные страницы. – michi

+0

Ну, в этом случае вам понадобятся разные правила для каждого идентификатора или используйте «RewriteMap», если у вас есть доступ к серверу. – anubhava

+0

Как написать правило для определенного идентификатора? Заранее спасибо. – michi

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