Пробую сделать ЧПУ с помощью .htaccess, правило срабатывает но, почему то echo $country выводит 1. Использую редирект после выбора страны onchange="window.location='/'+this.value; В .htaccess делаем правило: RewriteRule ^russia$ /?country=2 [L] В php: PHP: <? if (isset($_GET['country'])) { $country = $_GET['country']; } echo $country; // выводит 1 ?> Снизу: HTML: <label>Выбор страны:</label> <select name="country" onchange="window.location='/'+this.value;"> <option value="">Другая страна</option> <option value="russia" <?if($country == 2){echo "selected";}?>>Россия</option> </select>
Заработало! А что насчёт остальных ссылок а html? Надо вручную добавлять /russia/ и прописывать правила в htaccess или это можно как-то автоматизировать? Например, sait.com/contakt надо менять вручную на sait.com/russia/contakt для России и так для всех ссылок? Сайт может грузится так - sait.com/russia, правило срабатывает(RewriteRule ^russia$ /?country=2 [L]).
Ссылки нужно формировать такими, какими вы их хотите видеть. Естественно, везде должны быть публичные ссылки, а не те, в которые вы их рерайтите. ЧПУ предполагает использование символьных идентификаторов, а не числовых, хотя конечно можно ограничиться только использованием прежде всего путей с проскакивающими кое-где числовыми идентификаторами, например /country/2, правда, это недоЧПУ какое-то получается, но все-таки иногда такое имеет место быть. --- Добавлено --- Вы можете слаги (символьные идентификаторы) передавать прямо в скрипт, а там уже менять их на числовые идентификаторы или даже в отдельных случаях продолжать использовать символьные идентификаторы, как основные, а иногда и единственные. Оптимальным вариантом реализации ЧПУ будет отказ от трансляции элементов пути в GET-параметр(ы) и использование в скрипте исходного адреса. Основу этого подхода я описал в статье Как сделать единую точку входа с ЧПУ? --- Добавлено --- Если вам все же ближе использование кучи правил в .htaccess, чем предложенный мной способ, то хотя бы при рерайте полностью раскрывайте внутренний адрес обработчика, например index.php?country=2, а не то, что вы написали (слеш в начале подстановки можно поставить, но обычно значительно проще использовать директиву RewriteBase, иначе вы можете столкнуться с определенными непредвиденными проблемами).