ErrorDocument & Mod Rewrite - PullRequest
       14

ErrorDocument & Mod Rewrite

1 голос
/ 07 декабря 2011

Мне было интересно, есть ли способ использовать 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 Ответ

0 голосов
/ 07 декабря 2011

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

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

...