0

Я должен переписать массивное количество URL-адресов например: ОТ: http://www.lespoulettes-bijoux.fr/produit2.asp?id_produit=8489 TO: http://www.lespoulettes-bijoux.fr/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.htmlRewrite URL с RewriteMap Ошибка

Так я выбрал, чтобы сделать RewriteMap, потому что мой URL не имеет такой же идентификатор для соответствия.

Так я объявил мой RewriteMap, который loking так:

8489 http://www.lespoulettes-bijoux.fr/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.html 

В моем .htacess: Я хотел бы преобразовать свой URL, чтобы преобразовать мой параметр GET (id_produit) в INTERAL идентификатор мерзавцу его после того, как в мой ReWriteMap.

Проблема: У меня есть ошибка 500 при преобразовании моего URL, и я не знаю, правильный синтаксис для переключения после преобразования его:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$ 
RewriteRule (.*) /$1/id=%1 <== HERE 500 Internal Server Error 
#RewriteRule ^/id_produit.asp/(.*)$ ${map_product:$1} [R] 

Для возобновления: Я хочу, чтобы переключить «www.exemple.com/ produit2.asp? id_produit = 8489 'в www.exemple.com/produit2.asp/id=8489 и отправить идентификатор моей RewriteMap для перенаправления на правильный URL.

Благодарим за помощь!

ответ

0

Проблема здесь, вероятно:

RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$ 
RewriteRule (.*) /$1/id=%1 <== HERE 500 Internal Server Error 

, что вызывает петлю. Переписывает движок так, что после этого перезаписывается результат по-прежнему соответствует этому правилу и, таким образом, перезаписывается снова. Попробуйте добавить ? до конца, так что строка запроса удаляется:

RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$ 
RewriteRule (.*) /$1/id=%1? [L] 

Кроме того, ЮО нужно удалить ведущий слэш в регулярном выражении. URI запроса имеет свой ведущее косые отгоняют в правилах, которые каждый каталог на основе (например, в файле Htaccess), поэтому регулярное выражение должно выглядеть следующим образом:

RewriteRule ^id_produit.asp/(.*)$ ${map_product:$1} [R,L] 

И этого правило должно быть перед вашим другим правилом ,

+0

Я тестировал его с помощью тестера htacess (http://htaccess.madewithlove.be/) Но ссылка не соответствует. Я действительно не понимаю, чего не хватает. Спасибо, Джон Лин. – Lapiloubilem

0

Я почти есть решение:

RewriteCond %{QUERY_STRING} ^id_produit\=(.+)$ 
RewriteRule (.*) /$1/%1? [L] 
RewriteRule ^produit2.asp/(.*)$ ${map_product:$1} [R,L] 

Перенаправление меня в мою карту, но добавить/вар/WWW/Ле-poulettes-Bijoux/в середине моего URL:

/produit2. жерех? id_produit = 8489 => http://www.lespoulettes-bijoux.fr/var/www/les-poulettes-bijoux/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.html

В ut Мне нужно http://www.lespoulettes-bijoux.fr/colliers-femme-createur-fantaisie/femme-collier-ras-de-cou-fils-d-argent-et-6-perles-blanches-et-grises-10005.html

Как удалить эту бесполезную часть в свой URL?

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

  • Нет связанных вопросов^_^