Назад | Перейти на главную страницу

Правило перезаписи для изменения структуры URL

Я пытаюсь создать правило перезаписи мода, чтобы правильно изменить существующую структуру URL-адресов, которая выглядит следующим образом:

Старая версия: somesite.com/scripts/data/database.cgi?ArticleID=29154&report=SingleArticle&file=Data

Во что-то вроде этого:

Новое: somesite.com/oldarticle/id29154.htm

Все, что мне нужно, это взять ArticleID и вставить его в новую структуру url. То, что я придумал, не работает, но я знаю, что близок:

RewriteEngine On
RewriteRule ^(.*)/database\.cgi\?ArticleID=([0-9]+)&report=SingleArticle&file=Data$ /oldarticle/id$1.htm [R=301,NC,L] # Permanent Move

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

Строка запроса не является частью строки, сопоставленной в RewriteRule. Вместо этого вам понадобится что-то вроде этого:

RewriteCond %{QUERY_STRING} report=SingleArticle [NC]
RewriteCond %{QUERY_STRING} file=Data [NC]
RewriteCond %{QUERY_STRING} ArticleID=([0-9]+) [NC]
RewriteRule ^.*/database\.cgi /oldarticle/id%1.htm? [R=301,NC,L]

Я разбил условия так, чтобы порядок строки запроса не был жестко задан, но не уверен, имеет ли это значение для вас.