Я пытаюсь передать все изображения в каталоге в watermark.php, используя mod_rewrite в .htaccess.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.jpg$ /watermark.php?path=%{REQUEST_FILENAME} [L]
Он отлично работает на локальном компьютере, но на моем производственном онлайн-сервере (общий хостинг) все файлы изображений обслуживаются без перезаписи.
mod_rewrite включен онлайн, но игнорирует правило, если файл существует.
Что может быть не так?
UPDATE
Вот мои полные настройки: в подпапке основного домена document_root есть домен с поддоменом.
public_html (example.com DOCUMENT_ROOT)/
img (img.example.com DOCUMENT_ROOT)/
.htaccess в папке public_html:
<FilesMatch "\.(inc\.php|log)$">
Deny from all
</FilesMatch>
Options -Indexes +FollowSymLinks
php_value short_open_tag 0
php_value auto_prepend_file /home/username/public_html/bootstrap.inc.php
RewriteEngine On
RewriteCond %{HTTP_HOST} ^img\. [NC]
RewriteRule .* - [L]
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^example\. [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ shop/$1 [L]
.htaccess в папке img
:
<FilesMatch "\.(inc|log)$">
Deny from all
</FilesMatch>
Options -Indexes +FollowSymLinks
php_value short_open_tag 0
php_value auto_prepend_file none
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule \.jpg$ /watermark.php?path=%{REQUEST_FILENAME} [L]
Проблема в том, что существующие изображения в папке img
не переписываются. Апачи просто служат им как есть. Но если, например, я запрашиваю несуществующий файл, правило работает, и echo $_GET['path']
печатает полный путь к несуществующему файлу.