Как я могу получить несуществующие файлы, сопоставленные правильно в .htaccess? - PullRequest
0 голосов
/ 13 мая 2009

Дубликат:

Как переписать несуществующие файлы в Файлы по умолчанию? (.Htaccess)

Как бы я "переписал" место, если файл не существует? Я не хочу использовать перенаправление 404, но реальное переписать.

Так, например, допустим, что это каталог с изображениями. Если изображение не найдено, то оно перезаписывается на изображение по умолчанию?

т.е.,

images/1.jpg 
images/2.jpg 
images/default.jpg

если кто-то попытался зайти на сайт website.com/images/3.jpg, так как этого не существует, я хочу, чтобы это пошло к: «website.com/images/default.jpg"

Это было предыдущее "опубликованное" решение, но оно не совсем работало:

RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteRule /images/.* /images/error.jpg [L]

Он по-прежнему не «получает» нужное изображение (просто как обычный запрос 404).

Ответы [ 4 ]

2 голосов
/ 13 мая 2009

Что ж, ваше предыдущее опубликованное решение находится на правильном пути, но с ним немного сумасшествия. Попробуйте это:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule images/.* /images/default.jpg [L]
2 голосов
/ 13 мая 2009
RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteRule ^images/.* /images/error.jpg [L]

Очевидно, что это перенаправляет только если отсутствует файл в / images / ..., но вы можете легко изменить его для ваших собственных нужд

1 голос
/ 13 мая 2009

Вам лучше отправить код состояния 404, если файл на самом деле не существует, а не просто заменить его кодом состояния, отличным от 404. В противном случае URL будет обрабатываться как действительный.

Так что в вашем случае я рекомендую вам установить ErrorDocument каталога images на ваше изображение по умолчанию:

<Directory "/path/to/your/images/">
    ErrorDocument 404 /images/default.jpg
</Directory>

Но учтите, что блок <Directory> доступен только в контексте конфигурации сервера или виртуального хоста, но не в контексте для каждого каталога (то есть .htaccess).

Если вы не можете использовать вышеперечисленное, вы можете использовать собственный сценарий в качестве пользовательского документа об ошибке, чтобы проверить, какой URL был запрошен (см. Request_URI переменная среды), и при необходимости отправить изображение по умолчанию. Директива ErrorDocument должна выглядеть следующим образом:

ErrorDocument 404 /your-error-404.script
0 голосов
/ 13 мая 2009

переписать документ 404 для папки с изображениями:

(в вашем файле .htaccess в папке с изображениями)
ErrorDocument 404 default.jpg

...