На моем сервере я использую TimThumb в качестве плагина для изменения размера моих изображений, он прекрасно работает, за исключением случаев, когда я пытаюсь использовать его в содержимом моих электронных писем.
Google Gmail выводит это https://example.com/thumb.php?sr+c=
как src
атрибут (обратите внимание на знак плюс).
Я читаю Вот что это из-за запроса.
Так как я могу использовать .htaccess
переписать мой URL и удалить /thumb.php?src=
с /src/
?
Вот так выглядит ссылка на изображение:
https://example.com/thumb.php?src=example.jpg
Это то что мне нужно
https://example.com/src/example.jpg
Это мой ток .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^welcome/([^/]+)/?$ index.php?a=welcome&filter=$1 [NC,QSA,L]
RewriteRule ^explore/([^/]+)/?$ index.php?a=explore&filter=$1 [NC,QSA,L]
RewriteRule ^page/([^/]+)/?$ index.php?a=page&filter=$1 [NC,QSA,L]
RewriteRule ^(([^/]+)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L,QSA]
index.php
а также thumb.php
оба находятся в корневой папке
ОБНОВИТЬ
Я пытался добавить эту строку в мой .htaccess
и посетить https://example.com/src/example.jpg
но опять же он не работает, в этом случае он перенаправляет на страницу «приветствия».
RewriteRule ^src/([^/]*)$ /thumb.php?src=$1 [L]
2-е ОБНОВЛЕНИЕ
Я тоже попробовал это:
RewriteRule ^src/([^/]+)/?$ thumb.php?src=$1 [NC,QSA,L]
Опять не работает https://example.com/src/example.jpg
перенаправляет на мою «приветственную» страницу.
Вот так теперь выглядит мой .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^welcome/([^/]+)/?$ index.php?a=welcome&filter=$1 [NC,QSA,L]
RewriteRule ^explore/([^/]+)/?$ index.php?a=explore&filter=$1 [NC,QSA,L]
RewriteRule ^page/([^/]+)/?$ index.php?a=page&filter=$1 [NC,QSA,L]
RewriteRule ^src/([^/]+)/?$ thumb.php?src=$1 [NC,QSA,L]
RewriteRule ^(([^/]+)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L,QSA]
3-е ОБНОВЛЕНИЕ
внутри thumb.php
Вот как я строю запрос SRC
$_GET['src'] = 'https://s3-eu-west-1.amazonaws.com/bucket1'.'/'.$_GET['src'];
Я не могу понять, что здесь не так.
4-е ОБНОВЛЕНИЕ
Исходя из ответа Владимира Цветика, я попробовал это:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^src/(.*)$ /thumb.php?src=$1 [L,QSA]
RewriteRule ^welcome/([^/]+)/?$ index.php?a=welcome&filter=$1 [NC,QSA,L]
RewriteRule ^explore/([^/]+)/?$ index.php?a=explore&filter=$1 [NC,QSA,L]
RewriteRule ^page/([^/]+)/?$ index.php?a=page&filter=$1 [NC,QSA,L]
RewriteRule ^src/([^/]+)/?$ thumb.php?src=$1 [NC,QSA,L]
RewriteRule ^(([^/]+)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L,QSA]
И снова это не работает, это ошибка:
`The 't' parameter is not set.`
Но это странно, поскольку я установил условие параметра t пустым, как показано ниже:
if(!empty($_GET['t'])) {
if($_GET['t'] == 'a') {
$type = 'uploads/avatars';
$width_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300);
$height_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300);
} elseif($_GET['t'] == 'b') {
$type = 'uploads/backgrounds';
...
} else {
exit('Invalid parameter value');
}
} else {
$_GET['t'] == 'a';
$type = 'uploads/avatars';
$width_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300);
$height_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300);
}
Действительно, если я приеду https://example.com/thumb.php?src=example.jpg
Я вижу изображение аватара правильно
Это должно сделать трюк:
RewriteRule ^src/(.*)$ /thumb.php?src=$1 [L,QSA]
Насколько мне известно, TimThumb не поддерживается уже много лет и имеет проблему с безопасностью, которая позволит злоумышленникам выполнять код на вашем сервере. Быстрый поиск Гугл раскроет большинство уязвимостей TimThumb.
Я бы предложил перейти на обслуживаемый пакет.
Других решений пока нет …