Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Перенаправление всех запросов на одну страницу (https://javascript.ru/forum/server/24318-perenapravlenie-vsekh-zaprosov-na-odnu-stranicu.html)

trikadin 26.12.2011 01:53

Перенаправление всех запросов на одну страницу
 
Собственно, как на apache сделать перенаправление любого запроса на одну страницу, чтобы при этом страница знала, откуда произошло перенаправление?

Уже понял, что mod_rewrite, но ещё не понял, как это сделать с его помощью.

Сервер-сайд на php, если что...

B@rmaley.e><e 26.12.2011 02:40

Обычно делается так:
Код:

RewriteCond %{REQUEST_FILENAME} !-f  # если не файл
RewriteCond %{REQUEST_FILENAME} !-d # и не папка
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]


trikadin 26.12.2011 04:38

B@rmaley.e><e, спасибо) Огромное.

trikadin 27.12.2011 04:58

B@rmaley.e><e, а можно при этом не палить пользователю, что собственно, перенаправление было?

Иными словами, можно ли на каждый вопрос возвращать одну и ту же страницу? Подозреваю, что тут уже нужно будет прописывать не в .htaccess, а где-то глубже...

Serg_pnz 28.12.2011 11:32

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>';
?>

B@rmaley.e><e 28.12.2011 11:54

Цитата:

Сообщение от trikadin
а можно при этом не палить пользователю, что собственно, перенаправление было?

Какое перенаправление? RewriteRule изменяет адрес для самого апача, юзеру никаких Location'ов не возвращается.

trikadin 29.12.2011 00:47

Цитата:

Сообщение от B@rmaley.e><e
Какое перенаправление? RewriteRule изменяет адрес для самого апача, юзеру никаких Location'ов не возвращается.

Эм, я, наверное, что-то не то делаю, но у меня адрес меняется.

devote 29.12.2011 01:58

я делаю всегда так:

RewriteRule ^(.*)$ index.php?%{QUERY_STRING}&include_file=%{REQUEST_FILENAME} [NC,L]
на сервер приходит переменная в $_GET['include_file'] вот в ней полный путь к файлу/папке которую юзер запросил

trikadin 29.12.2011 02:01

Да дело уже не в том, чтобы получить этот адрес - это уже, слава богу, решено - дело в том, как не перенаправлять пользователя.

devote 29.12.2011 02:03

Цитата:

Сообщение от trikadin
дело в том, как не перенаправлять пользователя.

Менять у него адрес в адресной строке? или прозрачно что бы он не видел?


Часовой пояс GMT +3, время: 13:18.