2016-10-04 6 views
0

Я использую переписывание URL. Здесь много хорошей информации, и у меня есть рабочее решение, но я хотел бы сделать немного лучше.Как перенаправить запрос на изображение?

My Limited Решение

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RedirectMatch (.*)\.(gif|jpg|png)$ http://www.somesite.com$1.$2 
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

выше перенаправляет запросы изображений хорошо, но я строю несколько сайтов на разных языках, и я хотел бы улучшить следующим образом:

/attachments/1/canada-flag-small.1.jpg -> http://www.somesite.com/attachments/1/1.jpg 
/jointes/2/usa-petit.1001.png -> http://www.somesite.com/attachments/2/1001.png 

В принципе, все расширения в круглых скобках (gif | jpg | png) должны перенаправляться на http://www.somesite.com/attachments. Таким образом, первый токен в источнике изображения должен быть полностью проигнорирован.

Важным является второй токен в источнике изображения, так как это каталог, в котором хранится изображение, и он должен быть включен в перезаписанный URL-адрес.

Имя изображения в источнике изображения должно игнорироваться, но идентификатор изображения, который следует за именем и расширением, должен содержать имя изображения, на которое мы перенаправляем.

Если это будет проще, в названии изображения не будет никаких слэшей.

Мои собственные попытки приводят к ошибке внутреннего сервера. Надеюсь, кто-то здесь захочет взглянуть на это. Я видел похожие примеры, где люди начинают с идентификатора изображения, добавляют тире, а затем добавляют описательное имя изображения. Я бы предпочел использовать стиль, показанный выше, поскольку у меня будут изображения, такие как «3-wheel-atv.333.jpg», и я не хочу путаницы, где находится идентификатор изображения.

Желаемого Решение обеспечивается croisés

RewriteRule ^[^/]+/([^/]+)/(?:.*?\.)?(\d+\.(gif|jpg|png))$ http://www.somesite.com/attachments/$1/$2 [NC,L] 

Это позволяет изображения, которые будут храниться в виде вложений/Folder1/1.jpg но используются на страницах источников, такие как/прадедушка изображений/folder1/awesome- image.1.jpg.

ответ

0

Try с:

RewriteEngine on 

RewriteRule ^[^/]+/([^/]+)/(?:.*?\.)?(\d+\.(gif|jpg|png))$ http://www.somesite.com/attachments/$1/$2 [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA] 

Если ваш второй маркер, каталог сохранения изображения, только число, вы можете использовать:

RewriteRule ^[^/]+/(\d+)/(?:.*?\.)?(\d+\.(gif|jpg|png))$ http://www.somesite.com/attachments/$1/$2 [NC,L] 
+0

Спасибо, croisés. Это работает очень хорошо. Завтра я сделаю еще несколько тестов и отчитаюсь. – jacekn

Смежные вопросы