REGEX и RewriteRule - PullRequest
       20

REGEX и RewriteRule

0 голосов
/ 30 октября 2018

Я надеюсь получить представление о том, как лучше всего настроить перенаправление URL-адресов. Поскольку в URL-адресах используется динамический идентификатор, обычный перманент Redirect у нас не работает. Итак, я попытался переписать правило, которое, кажется, работает.

Мы надеемся очистить несколько строк следующим образом:

/myolddirectory/olddir/oldfile.php?id=2 should redirect to: /mynewdirectory?id=2
/myolddirectory/olddir/oldfile.php?id=4 should redirect to: /mynewdirectory?id=4

Это работает:

RewriteCond %{QUERY_STRING} (^|&)id\=2($|&)
RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=2 [L,R]
RewriteCond %{QUERY_STRING} (^|&)id\=4($|&)
RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=4 [L,R]

У нас есть около 600 идентификаторов. Мне просто интересно, есть ли более чистый способ сделать это без необходимости писать более 600 правил. Спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете сделать это, используя одно условие:

RewriteCond %{QUERY_STRING} \bid=([24])\b
RewriteRule ^myolddirectory/olddir/oldfile\.php$ /attra-pub-summaries?id=%1 [L,R]

%1 относится к значению, удерживаемому первой группой захвата в состоянии перезаписи.

...