26.12.2011, 01:53
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Перенаправление всех запросов на одну страницу
Собственно, как на apache сделать перенаправление любого запроса на одну страницу, чтобы при этом страница знала, откуда произошло перенаправление?
Уже понял, что mod_rewrite, но ещё не понял, как это сделать с его помощью.
Сервер-сайд на php, если что...
|
|
26.12.2011, 02:40
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Обычно делается так:
Код:
|
RewriteCond %{REQUEST_FILENAME} !-f # если не файл
RewriteCond %{REQUEST_FILENAME} !-d # и не папка
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] |
|
|
26.12.2011, 04:38
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
B@rmaley.e><e, спасибо) Огромное.
|
|
27.12.2011, 04:58
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
B@rmaley.e><e, а можно при этом не палить пользователю, что собственно, перенаправление было?
Иными словами, можно ли на каждый вопрос возвращать одну и ту же страницу? Подозреваю, что тут уже нужно будет прописывать не в .htaccess, а где-то глубже...
|
|
28.12.2011, 11:32
|
|
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
trikadin забыл упомянуть, что нужно еще сохранить запрос по которому пришли...
Мой вариант:
http://rewr002.jcase.ru/sdvdsv/test1.php?a=ewfw&b=ewef
Файлы:
.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA,R=301]
index.php
<?php
session_start();
unset($_SESSION['get']);
$_SESSION['get'] = $_GET;
header('location: test2.php');
?>
test2.php
<?php
session_start();
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>
Последний раз редактировалось Serg_pnz, 28.12.2011 в 11:35.
|
|
28.12.2011, 11:54
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от trikadin
|
а можно при этом не палить пользователю, что собственно, перенаправление было?
|
Какое перенаправление? RewriteRule изменяет адрес для самого апача, юзеру никаких Location'ов не возвращается.
|
|
29.12.2011, 00:47
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от B@rmaley.e><e
|
Какое перенаправление? RewriteRule изменяет адрес для самого апача, юзеру никаких Location'ов не возвращается.
|
Эм, я, наверное, что-то не то делаю, но у меня адрес меняется.
|
|
29.12.2011, 01:58
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
я делаю всегда так:
RewriteRule ^(.*)$ index.php?%{QUERY_STRING}&include_file=%{REQUEST_FILENAME} [NC,L]
на сервер приходит переменная в $_GET['include_file'] вот в ней полный путь к файлу/папке которую юзер запросил
|
|
29.12.2011, 02:01
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Да дело уже не в том, чтобы получить этот адрес - это уже, слава богу, решено - дело в том, как не перенаправлять пользователя.
|
|
29.12.2011, 02:03
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Сообщение от trikadin
|
дело в том, как не перенаправлять пользователя.
|
Менять у него адрес в адресной строке? или прозрачно что бы он не видел?
|
|
|
|