Отправляет email-рассылки с помощью сервиса Sendsay

Скрытие переменных в урле

Здравствуйте, inet.

Когда-то давно читал, что можно при помощи htaccess парсить урл, и
вычленять папки после домена, подставляя их имена в качестве значений
передаваемых гетом переменных. Искал вчера по яндексу, ничего не
нашёл. Может кто знает?

Суть вот в чём:
Нужно адрес www.domen.ry/papka/?p1=xxx переделать в
www.domen.ru/?p0=papka&p1=xxx Причём простой анализ, скажем, в ПХП не
подойдёт, потому что в строке адреса должен оставаться первый урл. И
всё должно быть таким образом, что ссылки, которые на странице
оформлены как относительные (просто указание файла, без пути), должны
как бы оставаться в этой же папке. По-моему, такое возможно...

Ответить   Andrey Yakushev Thu, 27 Jan 2005 08:58:48 +0300 (#305346)

 

Ответы:

Йох-ха-нга Andrey,

При помощи htaccess можно собрать свою страницу ошибки 404. Т.е. урл
может быть любой, а превратить его в переменные и выдать нужную
страницу - дело техники.

Ответить   Thu, 27 Jan 2005 13:34:45 +0300 (#305536)

 

Здравствуйте, Novikov.

Я думал об этом.
Но вот вопрос: когда поисковики заходят на эту страницу, они понимают,
что это 404, или берут страницу, как будто она существует?

Ответить   Andrey Yakushev Thu, 27 Jan 2005 14:34:21 +0300 (#305582)

 

Привет, Андрей!

Если php-код, который ты поставишь на обработку 404 будет возвращать
какую-то страницу, то поисковики будут думать, что эта страница
существует как обычно. Если в коде будет вовзращаться HTTP-код ошибки
404, то поисковики будут считать, что страницы не существует...

Пашка

27 января 2005 г., 14:34:21, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 27 Jan 2005 14:40:55 +0300 (#305589)

 

пишешь в htaccess следующее:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/papka/?p1=(.*)$
RewriteRule papka/?p1=(.*) /?p0=papka&p1=$1

Получаешь то, что нужно. :)

Пашка

27 января 2005 г., 8:58:48, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 27 Jan 2005 13:49:21 +0300 (#305543)

 

Здравствуйте, Пашка.

Во-во, очень похоже...
А урл в строке останется неизменным?

Ответить   Andrey Yakushev Thu, 27 Jan 2005 14:36:06 +0300 (#305584)

 

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

Пашка

27 января 2005 г., 14:36:06, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 27 Jan 2005 14:45:24 +0300 (#305593)

 

Здравствуйте, Пашка.

Спасибо огромное!
Буду пробовать...

Ответить   Andrey Yakushev Thu, 27 Jan 2005 15:08:03 +0300 (#305605)

 

Здравствуйте, Пашка.

Сделал так:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/(.*)/(.*)\?(.*)$
RewriteRule ^/(.*)/(.*) /$2&l=$1

RewriteCond %{REQUEST_URI} ^/(.*)/(.*)(^\?)(.*)$
RewriteRule ^/(.*)/(.*) /$2\?l=$1

И ничего не работает. Говорит 404, когда пытаюсь какую-нибудь папку
вписать в урл.

Ответить   Andrey Yakushev Thu, 27 Jan 2005 16:13:16 +0300 (#305694)

 

Привет, Андрей!

У тебя присутствуют явные синтаксические ошибки.
Если я правильно понял тебе нужно следующее: перенаправить все вызовы
в подпапки к тем же файлам в корне, а имя папки добавить
дополнительным параметром к вызову. Тогда тебе нужно написать так:

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/[^/]/[^/]\?(.*)$
RewriteRule ([^/])/([^/])\?(.*) /$2?l=$1&$3

RewriteCond %{REQUEST_URI} ^/[^/]/[^/\?]$
RewriteRule ([^/])/([^/\?]) /$2?l=$1

Кажется, так. :)

Пашка

27 января 2005 г., 16:13:16, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 27 Jan 2005 16:36:49 +0300 (#305715)

 

Здравствуйте, Пашка.

Заработало, но вот так:

RewriteCond %{REQUEST_URI} ^/[^/]*/[^/]*\?(.*)$
RewriteRule ([^/]*)/([^/]*)\?(.*) /$2?l=$1&$3

RewriteCond %{REQUEST_URI} ^/[^/]*/[^/\?]*$
RewriteRule ([^/]*)/([^/\?]*) /$2?l=$1

Звёзды, всё-таки были нужны! :)

Спасибо!

Ответить   Andrey Yakushev Thu, 27 Jan 2005 17:02:37 +0300 (#305726)

 

Да, точно! Забыл. :)

Пашка

27 января 2005 г., 17:02:37, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 27 Jan 2005 17:07:16 +0300 (#305730)

 

Здравствуйте, Пашка.

Уж извиняй, брат, что опять надоедаю...
Уже бьюсь-бьюсь - никак не идёт.

Вот что у меня стоит:

RewriteCond %{REQUEST_URI} ^/[^/]*/[^/\?]*\?[^\?]*$
RewriteRule ([^/]*)/([^/\?]*)\?([^\?]*) /$2?l=$1&$3

RewriteCond %{REQUEST_URI} ^/[^/]*/[^/\?]*$
RewriteRule ([^/]*)/([^/\?]*) /$2?l=$1

Так вот что интересно: работает только вторая пара строк. Первая не
работает ни при каких условиях. Зато вторая проглатывает как урлы с
вопросами, так и без них.
Соответственно, у меня переменные, которые передаются после вопросов,
все исчезают. А остаётся только то, что как бы в папке записано.

В чём баг!?

Ответить   Andrey Yakushev Fri, 28 Jan 2005 12:38:24 +0300 (#306261)

 

Баг видимо в регулярных выражениях. Но симптомы, которые ты описал
очень странны: если бы первые две строчки не работали, а работали
только вторые, то переменные после знака вопроса все равно не
съедались бы...... В общем для эксперимента могу только посоветовать
убрать обратные слешы перед знаками вопроса в квадратных скобках и
попробовать поставить числа на один меньше (т.е. не $1, $2, $3, а $0,
$1, $2).... А также поставь везде вместо звездочек плюсики - это будет
правильнее...

Пашка

28 января 2005 г., 12:38:24, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Fri, 28 Jan 2005 13:26:08 +0300 (#306291)

 

Здравствуйте, Пашка.

Очередная радость!
На самом деле баг был не в этом.
Просто почему-то в %{REQUEST_URI} вообще не было переменных. :/
Он их просто не анализировал.
Поэтому выход из положения оказался такой:

RewriteCond %{REQUEST_URI} ^/[^/]+/[^/]+$
RewriteRule ([^/]+)/([^/]+) /$2?l=$1&%{QUERY_STRING}

И всё решается одной парой.

Ответить   Andrey Yakushev Fri, 28 Jan 2005 14:13:31 +0300 (#306313)

 

Клево! :) Не знал таких тонкостей.... :)

Пашка

28 января 2005 г., 14:13:31, Andrey Yakushev <kordon_webmast***@m*****.ru> wrote:





библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Fri, 28 Jan 2005 14:19:16 +0300 (#306318)

 

Как сделать, чтобы адрес на диске был

www.domen.ru/razdel/

но откликался на

razdel.domen.ru



библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 20 Apr 2006 07:09:38 +0600 (#539900)

 

Подкрутить настройки web-сервера :)
При этом желательно убедиться, что запись *.domain.ru в неймсервере
указывает на тот-же хост, что и www.domain.ru (точнее domain.ru,
поскольку www.domain.ru - это тоже поддомен)

Andrew Popov wrote:

Ответить   Oleg Thu, 20 Apr 2006 12:14:52 +0300 (#540023)

 

Так и не понял как.
Это прописывается в .htaccess




библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Tue, 25 Apr 2006 00:12:12 +0600 (#541310)

 

Вас не затруднит использовать русский язык в сообщениях?

Andrew Popov wrote:

Ответить   Oleg Tue, 25 Apr 2006 10:38:57 +0300 (#541519)

 

.htaccess - это единственное, что я сказа не по-русски. Но это так файл
называется. Так и никак иначе.




библиотекa сайтостроительства http://www.i2r.ru/static/244/

Ответить   Thu, 27 Apr 2006 01:26:40 +0600 (#542225)

 

Слова русские, но язык мне слабо знаком. Ну да ладно, опустим.

Кроме htaccess, настройки апача (более глобальные) хранятся в файле
httpd.conf (теоретически имя и местоположение файла может быть любым) и
в любом количестве дополнительно подгружаемых файлов конфигурации.

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

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

Andrew Popov wrote:

Ответить   Oleg Thu, 27 Apr 2006 12:07:47 +0300 (#542453)

 

Кстати, а что это у вас за диск такой любопытный?

Andrew Popov wrote:

Ответить   Oleg Thu, 20 Apr 2006 12:15:28 +0300 (#540057)