. htaccess, который принимает N


У меня есть хак для virtuemart, который через php код:

<?php

$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

$image = imagecreatefromstring(file_get_contents($path));
$w = imagesx($image);$h = imagesy($image);


$watermark = imagecreatefrompng('watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);

imagecopy($image, $watermark, (($w/1)-($ww/1)), (($h-40)-($wh/1.35)), 0, 0, $ww, $wh);

header('Content-type: image/jpeg');
header('Content-Type: text/html;charset=utf-8');
imagejpeg($image,null,95);
exit();?>

перезаписывает изображения в каталоге с помощью этого. htaccess, чтобы включить watermark. png в изображения:

RewriteRule ^(resized)($|/) - [L]

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f

RewriteRule \.(gif|jpeg|jpg|png)$ watermark.php [QSA,NC]

Проблема в том, что есть файлы с N, которые, кажется, не идентифицируют код и, следовательно, заставляет его не работать.

Кто-нибудь может помочь мне узнать, что я должен был бы поставить, чтобы распознать файлы, содержащие N?

Много спасибо!

Author: Justino Rocamora Sánchez, 2016-12-16

1 answers

Проблема не в правилах .htaccess или в том, что идентифицируется в коде.

Когда вы получаете URL с $_SERVER['REQUEST_URI'] в:

$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

Закодирован. Например, URL /felizaño.png получен как /feliza%C3%B1o.png.


Для декодирования URL-адреса используется функция rawurldecode().

$path = rawurldecode($_SERVER['DOCUMENT_ROOT'] . $_SERVER['REQUEST_URI']);
 2
Author: Mariano, 2016-12-23 20:01:14