2013-12-04 3 views
1

мы застряли с переписыванием URL-адреса и перенаправлением 301 в .htaccesHtaccess перенаправить 301 URL Rewrite

На данный момент нашей InternetSite только получила один файл (index.php), который передавался в качестве переменных в категории ID для то покажите содержание этой категории.

Например: к категории Nr 4 вызывается с www.oursite.com/index.php?CATID=4 ссылка, которая показывает содержание категории «Карта-Франция» к категории Nr 5 вызывается с ссылка www.oursite.com/index.php?CATID=5, которая показывает содержание категории «карта-италия»

Всего у нас около 800 категорий.

Мы хотели бы переписать адреса таким образом, что будет отображаться название категорий: Например: www.oursite.com/map-france вместо www.oursite.com/index.php?CATID=4 www.oursite.com/map-italy вместо www.oursite.com/index.php?CATID=5

лучшая идея в настоящее время является использование функции mod_rewrite в .htacces

Нам удалось до сих пор для достижения этого со следующим кодом:

RewriteEngine On 
RewriteRule ^map-france/?$ index.php?CATID=4 [NC,L] 
RewriteRule ^map-italy/?$ index.php?CATID=5 [NC,L] 

Это работает pefectly.

Чтобы избежать двойной индексации из поисковых систем, мы также должны применить перенаправление 301 от старых URL-адресов к новым. Нам удалось сделать это с помощью следующего кода:

RewriteCond %{QUERY_STRING} CATID=4 
RewriteRule ^index\.php$ http://www.oursite.com/map-france/? [L,R=301] 

RewriteCond %{QUERY_STRING} CATID=5 
RewriteRule ^index\.php$ http://www.oursite.com/map-italy/? [L,R=301] 

Если мы все вместе это не работает, и это, кажется, генерировать бесконечный цикл перенаправления

Что мы делаем не так?

Большое спасибо за вашу помощь :)

ответ

0

согласующие Try agaist запроса вместо %{QUERY_STRING}

RewriteCond %{THE_REQUEST} \?CATID=4 
RewriteRule ^index\.php$ http://www.oursite.com/map-france/? [L,R=301] 

RewriteCond %{THE_REQUEST} \?CATID=5 
RewriteRule ^index\.php$ http://www.oursite.com/map-italy/? [L,R=301] 

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

+0

Спасибо, Джон, вы здорово! который решил проблему :) – user3066113

+0

Решение, предложенное выше, работает только с CATID с одной цифрой. CATID = 24 считывается как CATID = 2 и перенаправляется в категорию 2 Как мы можем решить эту проблему? – user3066113

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