RewriteCond %{REQUEST_URI} /wp-content/uploads/\.(jpg|jpeg|png|gif)$ [NC]
... и использование только htaccess невозможно.
Использование только .htaccess
возможно .Однако приведенное выше регулярное выражение не будет соответствовать запросу в форме /wp-content/uploads/2018/12/stack_help_me.jpg
(как в вашем примере).
Вы можете сделать что-то вроде следующего в верхней части файла .htaccess
, до любые существующие директивы:
RewriteEngine On
RewriteRule ^wp-content/uploads/\d{4}/\d\d/((..).*\.jpg)$ /mnt/images/$2/$1 [L]
Это специально соответствует URL-адресам формы /wp-content/uploads/<year>/<month>/<filename>.jpg
, где <year>
- любая 4-значная последовательность, а <month>
- любая 2-значная последовательность.Вы можете быть настолько специфичными или общими с регулярным выражением, сколько требуется.
$1
- это обратная ссылка на первый захваченный подшаблон, например.stack_help_me.jpg
.И $2
- это обратная ссылка на второй захваченный подшаблон (внутри первого), а именно первые два символа имени файла, например, st
.
PHP не требуется.
ОБНОВЛЕНИЕ: Если /mnt/images
фактически находится на другом жестком диске (за исключением DocumentRoot
), но на том же сервере, то вам нужно будет создать Alias
в конфигурации сервера для сопоставления /mnt/images
в локальное пространство URL.Вам также понадобится соответствующий контейнер <Directory>
, который позволит получить доступ к этому местоположению.Даже если вы в конечном итоге используете PHP для извлечения изображений, вам все равно потребуется предоставить доступ PHP.
Чтобы перенаправить запрос к сценарию PHP, вы можете изменить указанную выше директиву, как показано ниже:
RewriteRule ^wp-content/uploads/\d{4}/\d\d/(.+\.jpg)$ navigator.php?src=$1 [L]
Параметр URL src
будет содержать только базовое имя запрашиваемого файла.