Перейти к содержимому

Реферальная программа Мегаплана


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

#11 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 27 Ноябрь 2010 - 20:09

еще раз объясняю у меня сайт лежит на XAMPP
т.е. http://localhost/site
в твоем примере он буде работать если 404 страница будет лежать по адресу http://localhost/error
т.е. он не будет работать а мне надо чтоб он работал и в http://localhost и http://localhost/site
  • 0

#12 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Ноябрь 2010 - 20:22

А папка с файлами для отображения у вас будет каждая своя? Если так, то почему же тогда не сделать относительный путь?
Он будет работать относительно того места, где лежит .htaccess
И всё таки я не понял, почему твой .htaccess не будет работать в _http://localhost/site, путь-то у нас абсолютный.
Ложим htaccess в каталог _http://localhost и данный .htaccess распространится и на каталог _http://localhost/site
  • 0

#13 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 27 Ноябрь 2010 - 20:28

так относительный путь и не работает
в твоем примере логика нарушается
  • 0

#14 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Ноябрь 2010 - 20:29

surfer, как не работает? Куда перенаправляет?
  • 0

#15 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 27 Ноябрь 2010 - 20:34

я же тебе по русски объясняю при твоем подходе нарушается логика, т.е.

http://localhost/site1
http://localhost/site2
http://localhost/site3

все 3 сайта зависять от .htaccess и 404.html лежащих выше корня сайта, а при переносе надо отдельно переносить эти файлы отдельно, а может для одного сайта я хочу один .htaccess использовать а в другом другой
  • 0

#16 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Ноябрь 2010 - 21:14

surfer, ну так кто тебе мешает разместить в _http://localhost/
файл .htaccess с содержимым, закрытия без корня индекса
# запрещаем вывод индекса каталогов при отсутствии index.*
Options -Indexes
А во всех трех каталогах разместить свой файл .htaccess с содержимым каждого
# указываем страницы, при возникновении ошибок 403 и 404
ErrorDocument 403 error/404.html
ErrorDocument 404 error/404.html
Тут как раз относительная адресация получится.
Запрет показа индекса для всех каталогов даст основной .htaccess, а каждый из дочерних .htaccess перенаправит нас в свою папку error в каталоге siten.

А если ты хочешь сразу двух зайцев поймать, то лучше используй RewriteCond c RewriteRule, сейчас сам потестирую :)
  • 0

#17 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 27 Ноябрь 2010 - 21:21

ты не понял меня, не знаю как 3-й раз объяснить? :) мне не нужен общий мне нужен персональный .htaccess и чтоб работал и в корне и на уровень ниже

т.е.

/site
.htaccess
/site/error
404.html

и стоб это конструкция работала не завилимо
будь это

http://localhost/
http://localhost/site
http://localhost/folder/site

а у тебя жесткая привязка к конкретному месту и перенести папку проблематично без дополнительных настроек
  • 0

#18 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 Ноябрь 2010 - 00:05

surfer, вообще эта привязка убирается в файле виртуальных хостов, там можно каждому хосту назначить свои страниц ошибок через всё тот же параметр ErrorDocument.
Начитался я, оказывается, что относительный путь указывать для errorDocument нельзя, а нужно указывать именно абсолютный путь.
Пытался сделать через RewriteCond и RewriteRule, но отловить с помощью них 403 ошибку не получается. Вот отсутсвие файла или каталога запросто(это 404)
Так что я вижу пока только один выход - прописывать абсолютные пути или же общие страницы ошибок в одной папке относительно корня.
  • 0

#19 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 28 Ноябрь 2010 - 00:13

я тоже прочитал что мол нельзя задавать относительный путь, но как ни странно он работает, кстати в оф.документации сказано, что относительный можно http://www.apache.ru...l#ErrorDocument

допустим нельзя, можно абсолютный путь к файлу, а как заменить путь к файлу некой переменной окружения т.е. VAR+/error/404.html

т.е. с чего я и начал тему, вопрос открыт!

В случае проблемы или ошибки, Apache может быть конфигурирован так, чтобы выполнить одно из четырех действий:

1. выдать клиенту простое жестко закодированное сообщение об ошибках .
2. выдать настроенное сообщение .
3. перенаправить(redirect) запрос локальному URL, чтобы обработать проблему/ошибку
4. перенаправить(redirect) запрос внешнему URL, чтобы обработать проблему/ошибку


  • 0

#20 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 Ноябрь 2010 - 12:57

surfer,

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

Ты не прав. Относительный путь всегда относительно текущего каталога, в котором исполняется программа, скрипт и т.д. А вот абсолютный, это полный путь до нужного нам места. Т.о., относительный и абсолютный пути:
http://site.ru/path_to_file/file.ext # абсолютный путь с полным URL (полный абсолютный путь)
/path_to_file/file.ext # абсолютный путь относительно корня сервера (это так называемый локальный абсолютный)

path_from_current_catalog/file.ext # относительный путь до файла, относительно текущего каталога
А на сайте, который ты привёл, сказано:

URLs может(т.е. должен) начинаться с наклонной черты вправо (/) для локального URLs или быть полным URL

И если посмотреть примеры, то сразу становится понятным, что относительные пути использовать нельзя.
Так, что относительный нельзя, можно только абсолютные пути от корня сервера или полный абсолютный путь.
Я тебе уже ответил какие варианты применимы. Отловить Forbidden с помощью RewriteCond и RewriteRule у меня так и не получилось, не нашёл таких возможностей. Вот отсутствие файла или каталога на сервере - 404 (Not Found) запросто.
Так что решение такое:

Так что я вижу пока только один выход - прописывать абсолютные пути или же общие страницы ошибок в одной папке относительно корня.


  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru