Правило в `.htaccess` выглядит в целом правильно, но есть несколько моментов, которые следует проверить или изменить для корректной работы.
1. **Проверьте, включен ли модуль `mod_rewrite`:** Убедитесь, что на вашем хостинге действительно включен модуль `mod_rewrite`. Некоторые хостинги могут по умолчанию не включать его.
2. **Правильный синтаксис в файле `.htaccess`:** В вашем коде есть символы `<` и `>` вместо стандартных `<` и `>` для `<` и `>`. Убедитесь, что вы используете корректный формат при редактировании файла. Файл `.htaccess` должен выглядеть так:
```apache
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^fotos/xyz/(.+)$ /log.php?src=xyz&img=$1 [L]
</IfModule>
```
3. **Проверка прав доступа к файлу и директориям:** Ошибка 403 может возникать по различным причинам, включая неправильные права доступа к файлам и директориям. Убедитесь, что у вашего `.htaccess` и всех папок над ним правильные права доступа (обычно 644 для файлов и 755 для директорий).
4. **Проверка конфликта с другими правилами:** Если у вас есть другие правила в `.htaccess` или другие конфигурационные файлы (например, в главном конфиге Apache), это также может вызывать проблемы. Проверьте, нет ли конфликтующих правил.
5. **Логи ошибок:** Проверьте логи ошибок Apache, чтобы получить больше информации о том, что может вызывать ошибку 403.
6. **Избегание использования `&`:** В правилах URL вы можете использовать обычный символ `&`. В общем контексте HTML можно использовать `&`, но в URL это будет некорректно. Правильный вариант:
```apache
RewriteRule ^fotos/xyz/(.+)$ /log.php?src=xyz&img=$1 [L]
```
Если после выполнения всех этих шагов проблема не решится, попробуйте протестировать правило на локальном сервере или свяжитесь с поддержкой вашего хостинга для дальнейшей помощи.