dabich
@dabich
Web Developer

Как отправить массив методом get через редирект .htaccess?

Нужно отправить массив параметров типа /index.php?array[1]=1&array[2]=2&array[3]=3 с редиректом.
Примерно так:
RewriteRule ^page/?$ index.php?array=$1 [L,QSA]
Вот только регулярку нужно правильную чтобы передать параметры. И как это лучше сделать?
  • Вопрос задан
  • 4053 просмотра
Пригласить эксперта
Ответы на вопрос 2
Flaker
@Flaker
Ты можешь делать так index.php?array[1]=1&array[2]=2&array[3]=3, без rewrite в htaccess, тогда в массиве $_GET, по ключу array, у тебя будет лежать массив "1, 2, 3".

Не совсем понимаю, зачем тебе rewrit'ы понадобились.
Обычно, их используют для организации ЧПУ.

Допустим:
RewriteRule ^(.+)$ index.php?route=$1 [L,QSA]
В данном случае все что будет после site.ru/, будет переправлено на index.php как GET запрос. В массиве $_GET эта строка будет лежать по ключу route.
То есть, для того, что бы сделать из массив, придется парсить эту строку (Собственно, чем и занимается routing в паттерне MVC).

Грубо говоря, можно сделать так:
$route = $_GET['route'];
$array = preg_split('/\//', $route);

Теперь, при таком запросе "site.ru/1/2/3" в $array будут лежать элементы "1, 2, 3".

Вообще, нормальный rewrite пишется так:
# Activates URL rewriting
RewriteEngine on

# Allow file access
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite rules
RewriteRule ^(.+)$ index.php?route=$1 [L,QSA]

Тут учитывается доступ к файлам напрямую.
Ответ написан
Комментировать
svd71
@svd71
RewriteCond %{REQUEST_FILENAME} !/index.php$
RewriteRule ^(.*)$ index.php?array=$1 [L,QSA]


Упд: немного подреадктировал (трудно смотреть на сырцы в другом компе и одновременно набирать текст :-))
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы