- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую всех!
Есть сайт. Пытаюсь сделать преобразование URL'а в ЧПУ по формуле:
RewriteRule ^country/([A-Za-z-]+)/?$ country.php?country=$1 [L]
то есть, хочу преобразовать
http://www.site.ru/country.php?country=india в http://www.site.ru/country/india/
Казалось бы, простейшее преобразование, да и в сайтостроении я не первый год, но...
Работает данная конструкция только тогда, когда на конце нет слэша (http://www.site.ru/country/india). То есть, в этом случае, когда в конце нет слэша, я нормально получаю из адреса GET-переменную (india). Как только пытаюсь добавить в конец URL'а слэш (http://www.site.ru/country/india/)- GET-переменную не получаю :(
Вопрос: что я делаю не так?
Что самое интересное, рядом в этом же .htaccess'е прописано другое правило, которое прекрасно работает с конечным слэшем! Вот оно:
RewriteRule ^([a-z-]+)/([a-z-]+)/?$ category.php?parentcat=$1&category=$2 [L]
Буду благодарен за любые конструктивные мысли!
Это, конечно, скорее костыль, а не конструктивная мысль - но напишите два правила, одно для урла без слеша, второе со слешем.
Проверил на локальном сервере правило
работают оба варианта
есть только одно предположение:
у Вас возможно имеются еще правила в .htaccess, которые оказывают влияние на адрес со слэшем.
Это легко проверить, если перенести правило в самое начало, сразу после
RewriteEngine on
RewriteBase /
добавить в правило установку некой переменной, а перед правилом вставить проверку наличия этой переменной с выходом при ее наличии
RewriteCond %{ENV:REDIRECT_RWR} ^yes$
RewriteRule .* - [L]
RewriteRule ^country/([A-Za-z-]+)/?$ country.php?country=$1 [L,E=RWR:yes]
Если в этом случае со слэшем заработает, значит какое-то еще правило оказывало влияние.
Вопрос: что я делаю не так?
Что самое интересное, рядом в этом же .htaccess'е прописано другое правило, которое прекрасно работает с конечным слэшем! Вот оно:
RewriteRule ^([a-z-]+)/([a-z-]+)/?$ category.php?parentcat=$1&category=$2 [L]
Если это правило стоит в начале, то, естественно, запрос http://www.site.ru/country/india/ будет вести на category.php?parentcat=country&category=india. Поменяйте местами правила, вначале должны идти более строгие правила.
есть только одно предположение:
у Вас возможно имеются еще правила в .htaccess, которые оказывают влияние на адрес со слэшем.
Это легко проверить, если перенести правило в самое начало, сразу после
RewriteEngine on
RewriteBase /
Действительно, так и есть! Перенёс правило в начало, после RewriteBase - всё заработало! Сейчас буду разбираться, как правильно .htaccess составить. Всем, кто принял участие в решении моей проблемы - большое спасибо! :)