Я пытаюсь создать правило перезаписи мода, чтобы правильно изменить существующую структуру 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]
Я разбил условия так, чтобы порядок строки запроса не был жестко задан, но не уверен, имеет ли это значение для вас.