nixp.ru v3.0

28 мая 2017,
воскресенье,
01:59:34 MSK

DevOps с компанией «Флант»
Аватар пользователя btfnix
btfnix написал 18 июня 2014 года в 12:44 (5322 просмотра) Ведет себя как благородный джентельмен; открыл 5 тем в форуме, оставил 1 комментарий на сайте.

В общем, был изначально урл вида:

site.com/fr/index.php?category/ololo

Набросал .htaccess, стал:

site.com/fr/?category/ololo

Как удалить вопрос перед category?

Вот код .htaccess:

pastebin.com/mzFn9JMZ

Уже всю голову сломал.

Дмитрий Шурупов

 

Дело в том, что с параметрами (?category/ololo) надо работать через переменную %{QUERY_STRING}. В вашем случае получится примерно так:

RewriteCond %{QUERY_STRING} ^(category/.+)$
RewriteRule ^fr/index\.php$ /fr/%1? [NC,R=301,L]


 

btfnix

Теперь все супер и в url то, что нам нужно.

Но не работает страница, выдает 404.

Как передать при этом еще и get запрос?

 

Дмитрий Шурупов

Нужно убрать флаг «L» для этого правила (чтобы оно не было последним) и добавить в конец что-нибудь в духе:

RewriteRule ^fr/(.+)$ /fr/index.php?try=$1 [NE,L]


А в своем обработчике (в index.php) работать со значением try. Немного костыльно, потому что без этого try= все зациклится.

 

Andrey

Коллеги, всем привет!
Помогите пожалуйста.

Задача требует удаления знака » / » из url адреса.

В чем суть:
Есть адрес domain.com/file.php

Я через mod_rewrite убрал из url » .php » и теперь фаил доступен по адресу domain.com/file
но получается что появилась возможность ошибки ввода url.

Например юзер введет адрес domain.com/file/ то конечно же сработает ошибка и сайт не загрузится.

Помогите пожалуйста решить этот вопрос.

То есть должно быть примерно следующее:
Если в url в конце адреса есть » / » то мод должен его обрезать и направить пользователя на адрес последнего слеша » / »

Дмитрий Шурупов

Правильным решением будет добавление условия с проверкой на существование каталога/файла. Т.е. выполнять преобразование file -> file.php, только если это условие не выполнилось:

  RewriteCond %{REQUEST_FILENAME} !-f
  # только после этого идут ваши правила вроде такого:
  RewriteRule ^/(.+)$ /$1.php