Htaccess и закрывающие слеши?

Приветствую почтенное хабрасообщество!

Обращаюсь к вселенскому разуму для разрешения проблемы, поставившей меня в тупик.

Итак, задача: через .htaccess нужно склеить страницы со слешом ("/") и без оного в конце адреса, при этом основным зеркалом будут страницы без.

Казалось бы, всё просто:


RewriteRule ^(.*)/$ $1 [L,QSA]


Но почему-то QSA не срабатывает, т.е. конечная страница ничего в POST не получает… Что я делаю не так?


Если что, вот полный текст всех преобразований:


RewriteEngine On

RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [R=301,L,QSA]


RewriteCond %{REQUEST_URI} ^(.*)/$ [NC]

RewriteRule ^(.*)/$ $1 [L,QSA]


RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php [L,QSA]


(во-первых, делаем основным зеркалом «без www», во-вторых убираем завершающий слеш, ну и наконец со всех несуществующих файлов перебрасываем на /index.php)
  • Вопрос задан
  • 4522 просмотра
Пригласить эксперта
Ответы на вопрос 2
stan_jeremy
@stan_jeremy
да, как сказали выше лучше всего не рерайтить все что содержит пост запросы

RewriteCond %{REQUEST_METHOD} !POST
Ответ написан
MTonly
@MTonly
Веб-разработчик с 2002 года
QSA означает Query String Append и относится не к POST-, а к GET-данным.

POST-данные при внешнем редиректе, разумеется, теряются.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы