ErrorDocument & Mod Rewrite

Мне было интересно, есть ли способ использовать Mod Rewrite для обработки всех возможных кодов ошибок состояния http (4XX и 5XX) вместо объявления их всех в htaccess, например:

# serve custom error pages
ErrorDocument 400 error.php?code=400
[...]
ErrorDocument 510 error.php?code=510

Где-то вокруг я нашел этот маленький трюк:

# provide a universal error document
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ error.php [L]

Но разве это не обрабатывает только 404? Если все в порядке, как я могу изменить правило перезаписи кэша, чтобы оно также обрабатывало эту функцию?

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.\d+\.(css|js)$ $1.$2 [L]

Мне нужно что-то вроде:

IF %{REQUEST_URI} MATCHES "^(.+)\.\d+\.(css|js)$"
    REWRITE TO "$1.$2"
ELSE
    REWRITE TO "error.php"

Не могли бы вы мне помочь? Большое спасибо!

1 ответ

Решение

Ожидаете ли вы, что какая-то новая волна кодов состояния HTTP появится в Интернете в ближайшем будущем, и вы не сможете просто составить список из 10 или около того кодов ошибок, которые указывают на правильные соответствующие документы? Вы действительно должны просто просмотреть список кодов состояния HTTP и выбрать, какие из них ваш сервер фактически будет использовать, и установить для них документы об ошибках. Обычный веб-сервер, вероятно, будет когда-либо видеть только 404 и 500, возможно, 403, если разрешения не были настроены правильно, и, возможно, 509, если вы используете общий веб-сервис (хотя я думаю, что один из них обрабатывается хостинг-провайдер в любом случае). Если вы не создаете какой-то очень продвинутый веб-сервер, который может делать множество разных вещей, вы просто тратите впустую микроскопическое время своего веб-сервера на поиск всех тех кодов ошибок, которые он никогда не будет использовать.

А если серьезно, не перечисляйте каждый код состояния от 400 до 510. Серьезно. Многие из них будут кодами состояния, которые вы вручную отправляете из исполняемого скрипта, когда он определяет, что что-то не так.

Другие вопросы по тегам