Apache2 объединить RewriteRules

#apache #mod-rewrite

#apache #мод-перезапись

Вопрос:

В моем .htaccess есть около сотни RewriteRule файлов, таких как следующие:

 RewriteRule ^cars-and-([%a-zA-Z0-9_-] )/$ https://example.com/cars-and-$1 [R=301,L]
RewriteRule ^cars-and-([%a-zA-Z0-9_-] )/0[/]{0,1}$ https://example.com/cars-and-$1 [R=301,L]
RewriteRule ^cars-and-([%a-zA-Z0-9_-] )/([0-9] )$ /pathto/search.php?city=$1amp;page=$2 [L]
RewriteRule ^cars-and-([%a-zA-Z0-9_-] )$ /pathto/search.php?city=$1amp;page=0 [L]
  

Теперь я хочу добавить поддержку страниц AMP. Простое добавление .amp конца к URL должно отображать версию страницы AMP.

Я мог бы создать 100 дополнительных RewriteRule файлов, чтобы охватить все эти случаи с .amp окончанием, но мне интересно, есть ли более простой способ продолжить?

Есть ли способ добавить один RewriteRule при обнаружении .amp, который добавляет amp=1 параметр, а затем возвращается к существующим перезаписям (без удаления amp=1 параметра)?

Ответ №1:

Вы могли бы попробовать что-то подобное поверх ваших существующих правил:

RewriteRule (. )(.amp)$ $1?amp=1

Затем добавьте QSA флаг к существующим.

Обратите внимание, что вы должны избегать [L] флага в этом новом правиле, чтобы оно проходило через остальные из них.