gormarket

gormarket
Рейтинг
47
Регистрация
29.12.2010

mfl, более правильно все-таки вынести правило для файла из каталоге в файл htaccess этого каталога (а не прописывать это правило в файле htaccess в корне сайте).

Иначе проверка соответствия этому правилу будет производиться при обращении к любому URL на сайте (хотя может это в конечном итоге и не займет сильно много времени).

anbura, попробуйте в htaccess каталога использовать директиву RewriteBase для указания правильного префикса URL

т.е. допустим, если у вас htaccess лежит в каталоге forum, вместо

RewriteBase /

сделайте в нем

RewriteBase /forum

joost:
нужно именно, чтобы при запросе ответ 404 отдавался

Именно он и будет выдаваться (если у Вас не настроена страница, обрабатывающая код 404)

допустим у Вас есть страница в корне сайта index2.html.

Но вы хотите при ее запросе отдавать ответ 404

Так сделайте в htaccess внутреннее перенаправление (реврайт) на страницу, которой на сайте точно нет:

RewriteRule ^index2\.html$ /la-la-la-nopage.htm [L]

Mike05:
При этом редирект в .хтаксесс делать нельзя, поскольку этот ref надо обработать и прописать в куки.

при редиректе через .htaccess тоже есть возможность установки cookie (добавление кроме флагов [L,R=301] еще и cookie )


Флаг 'cookie|CO=NAME:VAL:domain[:lifetime[: path]]' (записать cocookie)
Записывает cookie клиенту. Имя cookie указывается в NAME а его значение в VAL. Поле domain это домен cookie, такой как например '.apache.org', опциональное lifetime это время жизни cookie в минутах, и опциональный path это путь cookie

Устанавливать куки при редиректе, а обработать ref уже потом, получив его из кук.

Что-то типа

RewriteCond %{QUERY_STRING} ^ref=([0-9]+)$ [NC]

RewriteRule .* http://%{HTTP_HOST}/$0 [R=301,L,CO=ref:%1:%{HTTP_HOST}]

но

#The cookie-flag is available in Apache 2.0.40 and later

а у меня на локалке Apache/1.3.33, так что проверить и отладить не могу.

blacks:
- при запросе site.ru/dir/txt.txt/ - кидает на 404

Хотя по идее стоит строка RewriteCond %{REQUEST_FILENAME} !-f

Правильно кидает

site.ru/dir/txt.txt/

это не файл, а папка

и такой папки у Вас нет !!!

А корректной обработки подобного URL в данном топике не показано

(есть только обработка URL типа "page.html/"),

да и у Вас в .htaccess очевидно тоже нет.

наверно для "site.ru/dir/txt.txt/" (да и для любого URL заканчивающегося на "имя_точка_расширение_слеш") должно быть что-то типа

RewriteRule ^(.*[^./]+\.[^./]+)/+$ /$1 [R=301,L]

blacks:
Спасибо.
Но предпоследняя строка (RewriteRule ^([^.]+)(?</)$ /$1/ [R=301,L])
Вызывает 500ю ошибку

Наверно автор хотел использовать т.н. утверждение "(?<!/)",

т.е проверку что последний символ перед этим утверждением не слеш

но возможно в Apache такой синтаксис регулярных выражений не поддерживается.

Можно воспользоваться таким вариантом добавления завершающего слеша если URL не содержит точки и не заканчивается слешем

RewriteRule ^([^.]+)([^./]+)$ /$0/ [R=301,L]

1. перенесите объявление скриптов из нижней части части страницы внутрь тега <head></head>

(быстрее загрузятся, быстрее выполнятся)

2. разнесите картинки по разным доменам

(типа часть картинок на img1.mirpesh.com, часть на img2.mirpesh.com и т.д,

т.к. есть ограничения в браузерах на количество одновременно загружаемых документов с одного домена)

Попробуйте что-то типа

$_SESSION['lasturl']=$_SERVER["REQUEST_URI"];

но перед этим проверить старое значение $_SESSION['lasturl'] и сохранить его в истории посещенных пользователем страниц (например в массиве $_SESSION['history_user'])

Но я уже писал Вам, что будет, если у посетителя будет открыто несколько вкладок здесь

И такое использование сессий будет работать только если браузер посетителя поддерживает сессии (либо через куки, либо через параметр в адресе страницы - во втором случае уже Вам нужно о передаче параметра заботиться )

скорей всего такого решения для onClick нет.

Но и задачу Вы себе поставили (получать информацию о том откуда пришел посетитель) не имеющую решения в 100% случаев, даже если отслеживать переходы внутри одного сайта.

Вы не учитываете еще что в некоторых браузерах реферер не передается или в браузере настраивается чтобы он не передавал эту информацию.

Можно еще для случаев, когда используются сессии, хранить информацию о посещенных страницах на сервере.

Это тоже не может гарантировать 100% точность (например открыто несколько вкладок в браузере и посетитель пользуется то одной, то другой вкладкой).

Но совместно с $_SERVER["HTTP_REFERER"] это может повысить точность определения очередности посещения страниц.

Всего: 437