Скажем, нужно сделать правило для всех стран, как можно упростить данные строки в htaccess? RewriteRule ^russia$ /index.php?country=1 [NC,L] RewriteRule ^ukraine$ /index.php?country=2 [NC,L] RewriteRule ^belarus$ /index.php?country=3 [NC,L]
Использовать давно проверенный способ - единая точка входа. Т.е. все запросы адресуются на индексный файл, там вы разбираете URI и, в зависимости от него, выполняете тот или иной сценарий.
Есть такая единая точка входа, но не на index.php. А здесь именно надо настроить страны на странице index.php. --- Добавлено --- Я думаю, что в htaccess country=1,2,3 даже не важны, нужно правило чтобы при таком раскладе (http://localhost/belarus) грузился index.php, а не другая страница с единой точка входа. Что то типа такого правила: RewriteRule ^(.*)$ index.php [NC,L] - оно не работает, но суть примерно ясна Так как страну можно потом вытащить из БД по части урла /belarus.
Если есть осн. точка входа, а это какой-то хак, то с учетом написанного достаточно при помощи маски сузить фильтр до нужных значений, например: Код (Text): RewriteRule ^(russia|ukraine|belarus)$ index.php [NC,L] Однако согласен с Deonis'ом, не надо на это понапрасну растрачивать ресурсы и загромождать .htaccess деталями, которых в нем быть не должно. Повесьте в осн. скрипте соотв. обработчик на указанные адреса или на крайняк отлавливайте обращения по указанным адресам в обработчике 404-ой осн. скрипта и при попадании подключайте ваш index.php.
Если стран дофига, а интегрировать доп. скрипт в основной не позволяет религия, нужно усложнить адреса, добавив в них какой-то общий отличительный признак, например префикс /country/, и использовать общий шаблон с этим признаком в маске для вызова хака, либо фильтровать в хаке все подряд (не самый эффективный вариант). И только при промахе в нем вызывать из него напрямую осн. скрипт, например: WP-перенаправление со сменой post_id на postname (там имя index.php все же имеет осн. фронт, но не суть).
Спасибо, так более короче. Я подумал, что названия стран тоже можно убрать, всё равно из урла они так и так берутся. Делал так: RewriteRule ^(.*)$ index.php [NC,L] - но так конечно уже не работает
Я же вам написал, что когда вы перехватываете «посторонние» запросы, нужно отдавать управление прямо из хака в осн. точку входа. А с такой маской (скобки тут лишние, да и $ не особо нужен) вы перехватываете все подряд, поэтому, естественно, при обнаружении промахов внутри хака нужно вызывать осн. скрипт.