КОТЕНОК является актуальным портом почтенной старой ШПАКЛЕВКИ. Это поддерживает снабженные вкладками сессии и набор других тонкостей/тонких настроек к исходной ШПАКЛЕВКЕ.
www.9bis.net/kitty
К сожалению, не многие люди знают об этом ветвлении все же. Если бы Вы в настоящее время используете ШПАКЛЕВКУ, я настоятельно рекомендовал бы КОТЕНКА.
Я думаю, что вы неправильно поняли относительный путь. Файлы
.htaccess
не имеют какого-либо особого поведения, которое заставляет пути быть относительными; По сути, они аналогичны блоку
с точки зрения поведения конфигурации.
ErrorDocument
не имеет никакого понятия о контексте; когда вы вводите путь вроде /error.php
, который всегда считается относящимся к корню документа, независимо от того, где он настроен. В конфигурации mod_rewrite
в блоке
или в файле .htaccess
используются относительные пути, что, вероятно, и есть то, о чем вы думаете для такого поведения.
Пара вариантов, как вы могли бы это реализовать ... у вас может быть одна ошибка . php
, который извлекает содержимое из файлов ошибок для каждого приложения в зависимости от пути запроса?
Или вы можете просто использовать mod_rewrite
, чтобы получить желаемое поведение выбора страницы с ошибкой (чтобы логика соответствовала то, что вы ищете, представляет собой немного сложную путаницу):
<Directory /path/to/docroot>
# First, we'll have a rule that will handle looking for an error.php in
# the app directory that the request is in...
# Not a file or a directory that exists:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Capture the application directory that we're trying to load from (if
# there is one) for use in the next rule:
RewriteCond %{REQUEST_FILENAME} ^/path/to/docroot/([^/]+)/
# Check if an error.php exists in that directory;
RewriteCond /path/to/docroot/%1/error.php -f
# Send the response to the error page. It should set the 404 response code.
RewriteRule ^([^/]+)/.*$ $1/error.php [L]
# Ok, the previous pile of rules didn't apply; if the user's requesting
# a nonexistent resource, then either the user's not in an app subdirectory,
# or they're in a subdirectory that didn't have an error.php.
# So, this is a lot simpler:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ error.php [L]
</Directory>