Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 271

Возможно ли так настроить .htaccess?

21.02.2014, 17:27. Показов 1298. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Хотелось бы узнать, возможно ли в .htaccess реализовать следующее.
Предположим есть сайт site.ru. На сайте, естественно, есть страницы с урлами разного формата (типа site.ru/page.html, site.ru/page.php?par1=1&par2=2, site.ru/section/, и т.д.).
Возможно ли прописать правила в .htaccess так, чтобы всегда, при заходе на сайт по любой ссылке (ну то есть с урлом любого формата), чтобы происходило перенаправление на страницу index.php с параметром url, хранящим в себе как раз урл, по которому пользователь прошел на сайт.
Если на пальцах суть проблемы:
1) пользователь видит ссылку в инете с адресом site.ru/page.php?p=123 и кликает по ней
2) в результате он попадает на страницу site.ru/index.php?url=site.ru/page.php?p=123 (видимо спец символы будут экранироваться или заменяться), но при этом в адресной строке остается site.ru/page.php?p=123
Буду рад любым примерам в тему.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2014, 17:27
Ответы с готовыми решениями:

htaccess берет правила из другого htaccess. Возможно?
Добрый день! Есть сайт с разветвленной структурой каталогов. В разных каталогах - разные правила mod_rewrite. Но есть несколько...

Настроить .htaccess
Такая проблема: хочу склеить домены, чтобы без index.php в адресной строке показывалось. Кладу значит файл в каталог: domen.domen.ru. На...

Как настроить .htaccess?
Хочу перенаправить: с http://www.site.ru/index.php?id=6 на http://www.site.ru/page.html Написал вот такое: RewriteCond...

6
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
22.02.2014, 19:28
Рерайт так и работает. Более того есть движки, которые как раз и фильтруют адреса всех страниц в одном файле.
0
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 271
22.02.2014, 21:49  [ТС]
Что-то мудрено написал. Попробую облегчить:
если я в .htaccess пропишу правило о перенаправлении всех входящих соединений на index.php, а уже в index.php получать $_SERVER['REQUEST_URI'] - ведь, насколько я понимаю, как раз и получу именно адрес входящей ссылки (а не index.php)?
0
Невнимательный
 Аватар для ft4l
3106 / 1275 / 358
Регистрация: 08.02.2013
Сообщений: 7,441
Записей в блоге: 2
23.02.2014, 08:59
1) пользователь видит ссылку в инете с адресом site.ru/page.php?p=123 и кликает по ней
определить то что пользователь пришёл с другого сайта можно только если у него в браузере включен и работает как задумано отправка HTTP_REFERER в заголовках запроса.
Или если он пришёл по ссылке в QUERY_STRING котрой написано с какого сайта он пришёл

в index.php получать $_SERVER['REQUEST_URI']
с правилом
RewriteRule ^/phpinfo/?$ /cgi-bin/phpinfo.php?a=b [QSA]
получается
SCRIPT_FILENAME => J:/home/tools/htdocs/cgi-bin/phpinfo.php
REDIRECT_QUERY_STRING => a=b&x=y
REDIRECT_URL => /phpinfo
QUERY_STRING => a=b&x=y
REQUEST_URI => /phpinfo?x=y
SCRIPT_NAME => /cgi-bin/phpinfo.php
из имён сайтов есть только имя сервера, и то-же имя из заголовка Host, (который HTTP_HOST)
0
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 271
23.02.2014, 11:38  [ТС]
Мне не важно откуда пользователь пришел на сайт.
Важно знать, по какой ссылке пользователь пришел на сайт и перенаправить его на index.php так, чтобы в index.php получить эту самую входящую ссылку.
0
Невнимательный
 Аватар для ft4l
3106 / 1275 / 358
Регистрация: 08.02.2013
Сообщений: 7,441
Записей в блоге: 2
24.02.2014, 03:13
Возможно, проблема только с тем чтобы устранить зацикливание...
типа такого
/ -> /index.php?query=/ -> /index.php?query=/index.php?query=/ -> ...

в /manual объясняется почему [L] никак не решает это
If you are using RewriteRule in either .htaccess files or in <Directory> sections, it is important to have some understanding of how the rules are processed. The simplified form of this is that once the rules have been processed, the rewritten request is handed back to the URL parsing engine to do what it may with it. It is possible that as the rewritten request is handled, the .htaccess file or <Directory> section may be encountered again, and thus the ruleset may be run again from the start. Most commonly this will happen if one of the rules causes a redirect - either internal or external - causing the request process to start over.

It is therefore important, if you are using RewriteRule directives in one of these contexts, that you take explicit steps to avoid rules looping, and not count solely on the [L] flag to terminate execution of a series of rules, as shown below.

The example given here will rewrite any request to index.php, giving the original request as a query string argument to index.php, however, the RewriteCond ensures that if the request is already for index.php, the RewriteRule will be skipped.

Code
1
2
3
RewriteBase /
 RewriteCond %{REQUEST_URI} !=/index.php
 RewriteRule ^(.*) /index.php?req=$1 [L,PT]

Не по теме:

к сожалению похоже нет и пока не предвидится более универсальных способов, как если было-бы например возможно с RewriteCond %{REDIRECT_URL}



Даже не хочется предлогать варианты ...
Но похоже однозначно перед RewriteRule потребуется
ещё что-нибудь вроде
RewriteCond %{QUERY_STRING} ^(.*)$
чтобы/если иметь доступ к QUERY_STRING как например к %1 в строке подмены
И потом обязательно появится вопрос, как сделать что-бы не перебрасывало запросы на картинки, стили, скрипты , ... RewriteCond ... вероятно
, ещё есть куча других [флагов]
, возможност юзать cookie ...
0
34 / 34 / 2
Регистрация: 22.08.2010
Сообщений: 271
24.02.2014, 07:59  [ТС]
В общем решил задачу, так сказать, по второму варианту.
То есть, сначала просто перенаправляю все ссылки на index.php:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

И уже в index.php получаю адрес, по которому пользователь пришел на сайт через $_SERVER["REQUEST_URI"].
Работает. Если видите какие-то недостатки данного решения - хотелось бы знать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.02.2014, 07:59
Помогаю со студенческими работами здесь

Настроить Codeigniter и .htaccess
Решил изучить данный фрамеворк. Установил WAMP. Создал для директорию и распокавал в нее CI. И возникла следующая проблема: создал...

.htaccess настроить гибкую RewriteRule
Пусть есть сайт вида &quot;site.com&quot;. Его страницы, доступные по адресу &quot;site.com/a/qwerty&quot; и &quot;site.com/b/qwerty&quot; разные, но файла...

Htaccess, как правильно настроить редирект?
Здравствуйте, подскажите как правильно настроить .htaccess Имеется такая иерархия, themes index.php .htaccess --m ...

Как настроить .htaccess. Выдает ошибку!
В чем может быть проблема? Выдает ошибку Internal Server Error Options All -Indexes RewriteEngine On RewriteRule...

Не могу настроить .htaccess для 404 страницы
У меня такая проблема. Любая не существующая страница отдает код 200 вместо 404 У файле .htaccess строка ErrorDocument 404 /404.php...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru