- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый вечер!
Внимательно прочитал одну из тем форума, посвященную индексации динамических страниц. В частности, избавиться от наличия в ссылках URL`ей типа: www.mysite.ru/script.cgi?page=index&id=1 можно с помощью обработки ошибки 404, возникающей при попытке перехода на URL типа: www.mysite.ru/index/1
Я так и сделал: настроил поставил ErrorDocument для 404 в Apache на script.cgi, парамеры page и id извлекал из $ENV{REQUEST_URI}. Вся работает как надо за исключением одного момента.
В результате обращения к www.mysite.ru/index/1 в адресной строке браузера стоит именно www.mysite.ru/index/1, а хотелось бы, чтобы там стояло просто www.mysite.ru/index, т.к. параметр id=1 служит чисто для статистики и не стоит его отображать в URL пользователя. Во-первых, некрасиво, а во-вторых, вдруг человек захочет добавить страницу в избранное, а тогда, возникнут проблемы с корректностью статистики.
Можно ли как-то получить доступ к адресной строке браузера?
Заранее благодарен за ответы!
url gripper - можно оставить только mysite.com или сделать редирект на index
Что такое url gripper я не знаю:( А идея насчет редиректа приходила мне в голову, но тогда если сделать просто редирект на index - сервер зациклится, т.к. этот запрос также будет обратываться script.cgi. Можно правда сделать два скрипта, типа один смотрит есть ли параметры после index, если есть - обрабатывает и отрезает и редиректит на другой скрипт, который уже выдает страничку. Если подумать, можно, наверное, обойтись и одним скриптом, дабы он вызывал сам себя два раза, но и то и другое решение несколько кривовато.
Наверняка, как-то можно обмануть браузер, послать ему HTTP-ответ с подмененным URL, но так чтобы он не пошел по нему, а просто поместил в адресной строке. Я покопался в спецификации HTTP 1.1 там (в HTTP-ответе) есть два поля Location и Content-Location, вот только я не знаю, как с ними правильно работать из Perl/CGI, чтобы добиться требуемого результата.
Нельзя.
Возможность спрятать или подменить url, оставив только mysite.com, например.
Цитата:
----------------------------------------------------------------------
Возможность спрятать или подменить url, оставив только mysite.com, например.
----------------------------------------------------------------------
Ясно, но, насколько я понял, URL Gripper - это фишка, которую предоставляет провайдер хостинга. Можно ли как-то сделать тоже самое самому средствами Perl и имея доступ к настройкам Apache?
Цитата:
----------------------------------------------------------------------
Нельзя.
----------------------------------------------------------------------
Алексей, следуя написанному в спецификации HTTP можно предложить такой вариант:
Послать ответ со статусом 201 (Created), а в Location поместить новый URL, тогда браузер должен отобразить этот новый URL. Но этот вариант у меня не сработал, хотя вроде бы все логично.
Кстати, не подскажете, как поисковые системы при индексации относятся к редиректам и махинациям со статусом?
А чем Вас mod_rewrite не устраивает?
Послать ответ со статусом 201 (Created), а в Location поместить новый URL, тогда браузер должен отобразить этот новый URL. Но этот вариант у меня не сработал, хотя вроде бы все логично.
Браузер отображает тот URL, с которого грузит страницу. Можно как-то играться с фреймами, яваскриптом и т. п., но с помощью ответов сервера можно добиться только редиректа.
Кстати, не подскажете, как поисковые системы при индексации относятся к редиректам и махинациям со статусом?
Нормально относятся. :) 200 - включение в базу, 301/2 - ставит в очередь новый адрес, 304 - по идее сохраняет имеющийся. В остальных случаях - убирает.
Если он стоит "чисто для статистики", то имеет смысл делать редирект на www.mysite.ru/index/, а наличие /1 в первом случае как раз и учитывать в этой самой статистике (писать в базу и т. п.). Естественно, разбирать запрашиваемый URL в скрипте-обработчике 404 надо аккуратно.
А чем Вас mod_rewrite не устраивает?
Да просто хочется, чтобы вся логика была в одном скрипте, а не размыта в конфигурации Apache.
Большое спасибо всем за помощь!
Я сделал так, как советовал Алексей, вот только долго мучился с редиректом. Писал:
print "Status: HTTP/1.1 301\n";
print "Location: http://localhost/index\n\n";
Результат нулевой, не редиректится. Потом дотукал посмотреть заголовок отдаваемый сервером.
Оказалось, что Апач к моему статусу приписывал HTTP/1.1
Получалось:
HTTP/1.1 HTTP/1.1 301
...
Бэд рекуест и вся фигня.
Уж не знаю Апач странный (2.0.39) или руки у меня кривые.
Теперь пишу:
print "Status: 301\n";
print "Location: http://localhost/index\n\n";
И все работает
🍻