После редиректа в htaccess не передаётся header

12
bork75
На сайте с 14.11.2011
Offline
93
724

Картинки на сервере формируются через php код и изначально url имеет такой вид

http://sait.ru/index.php?id=1.jpg

В http заголовке вижу:

Last-Modified: Wed, 16 Nov 2011 17:16:02 GMT

Content-Length: 1700

Accept-Ranges: bytes

В htaccess привёл адрес картинки к нормальному http://sait.ru/img/1.jpg, всё работает, но заголовки не передаются теперь.

RewriteRule ^img/1.jpg$ /index.php?id=1.jpg [L] 

Как сделать?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

Ну конечно не передаются, вы же через PHP выводите картинку же. Вот и отдавайте им все заголовки.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
IL
На сайте с 20.04.2007
Offline
435
#2
bork75:
Как сделать?

Так примерно

<?php
header('Content-Length: 1700');
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
bork75
На сайте с 14.11.2011
Offline
93
#3

Повторюсь, на php странице заголовки я все передал и когда просматриваю страницу http://sait.ru/index.php?id=1.jpg через сервис "просмотра HTTP заголовков" вижу их.

А когда просматриваю страницу http://sait.ru/img/1.jpg через этот же сервис, то заголовки уже отсутствуют

siv1987
На сайте с 02.04.2009
Offline
427
#4
bork75:
Повторюсь

Вообще-то вы не повторяетесь...

А сама картинка есть? Может запрос даже не радиректится реврайтится? Если и есть, проверьте действительно ли есть реврайт.

bork75
На сайте с 14.11.2011
Offline
93
#5
siv1987:
Вообще-то вы не повторяетесь...

А сама картинка есть? Может запрос даже не радиректится реврайтится? И если и есть, проверьте действительно ли есть реврайт.

да, точнее реврайтится, в первом посте пример написал хтасеса.

Сами картинки лежат на одном сайте, а подхватываю другим.

после RewriteRule http://sait.ru/img/1.jpg заголовок выглядит так :

HTTP/1.1 200 OK

Server: nginx

Date: Sat, 14 Dec 2013 19:15:37 GMT

Content-Type: image/jpeg

Connection: keep-alive

X-Powered-By: PHP/5.3.3-7+squeeze17

По прямой php ссылке http://sait.ru/index.php?id=1.jpg так:

HTTP/1.1 200 OK

Server: nginx

Date: Sat, 14 Dec 2013 19:26:15 GMT

Content-Type: image/jpeg

Connection: keep-alive

X-Powered-By: PHP/5.3.3-7+squeeze17

Cache-Control: private, max-age=10800, pre-check=10800

Last-Modified: Sat, 14 Dec 2013 16:55:18 GMT

Content-Length: 6770

Accept-Ranges: bytes

siv1987
На сайте с 02.04.2009
Offline
427
#6
bork75:
Server: nginx

Ответ на ваш вопрос.

Ссылка точно реврайтится?

bork75
На сайте с 14.11.2011
Offline
93
#7
siv1987:


Ссылка точно реврайтится?

Выпил кофе, перепроверил всё, действительно не на тот php файл реврайтил, вот я олень! 😂

Все заголовки выводятся, осталось теперь Last-Modified поправить

Сейчас он всё время обновляется при каждом запросе, написал на странице просто

header('Last-Modified: '.gmdate('D, d M Y H:i:s ').'GMT');

Как его написать лучше?

siv1987
На сайте с 02.04.2009
Offline
427
#8
bork75:
Сейчас он всё время обновляется при каждом запросе

А почему ему не обновляться, если:

bork75:
gmdate('D, d M Y H:i:s ')
bork75:
Как его написать лучше?

header('Last-Modified: Wed, 16 Nov 2011 17:16:02 GMT');

ПО хорошему конечно надо last-modified вашего файла

bork75
На сайте с 14.11.2011
Offline
93
#9

Простой пример написал, помогите с Last-Modified

Пытаюсь не грузить лишний раз сервер с которого тяну картинку

Может ещё что нужно?

заголовки смотрю здесь: bertal.ru


<?php
header('content-type: image/jpeg');
header('Last-Modified: '.gmdate('D, d M Y H:i:s ').'GMT');

$url = 'http://auto.tltnews.ru/pic/files/food/82.jpg';

$content = file_get_contents($url);
print_r($content);
?>
siv1987
На сайте с 02.04.2009
Offline
427
#10

bork75, а какой смысл отдавать всегда last-modified-у текущее время? По моему фишка как раз в том, чтобы время как можно дольше не менялось. Это код надо бы выкинуть, переписать на курл и указать там реальный заголовок файла. А чтобы лишний раз не грузить сервер, для статики отдают другой заголовок, чтото типа Expired

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий