Jump to content

Recommended Posts

При использовании https соединения заголовки Last-Modified не отдаются

в .htaccess прописано:

# Редирект https
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Изначально при использовании http соединения​ в index.php было прописано:

// Если все хорошо
if(($res = $view->fetch()) !== false)
{

	// Выводим результат
	header("Content-type: text/html; charset=UTF-8");

    $LastModified_unix = strtotime($view->last_update); // время последнего изменения страницы

    if(!empty($LastModified_unix) && $LastModified_unix > 0)
    {
        $LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
        $IfModifiedSince = false;
        if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
            $IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
        if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
            $IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
        if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
            header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
        }
        header('Last-Modified: '. $LastModified);
    }

	print $res;

 

 

и все работало корректно.

Подскажите, где может быть проблема

 

Edited by snake
Link to post
Share on other sites

Неплохо было бы если показали б весть .htaccess

 

или хотя бы как передаются заголовки If-Modified-Since на сайт. 

 

Так же для этого вопроса нужно знать как работает php на сервере

Edited by yr4ik
Link to post
Share on other sites

файл .htaccess

AddDefaultCharset UTF-8
ErrorDocument 404 /404
ErrorDocument 401 /password.php
RewriteEngine on

# Редирект https
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

# Админка теперь по адресу /simpla
RewriteRule    ^admin/?$  simpla [L]


# Каталог товаров
RewriteRule ^catalog/([^/]+)/?$    index.php?module=ProductsView&category=$1 [L,QSA]
RewriteRule ^catalog/([^/]+)/([^/]+)/?$    index.php?module=ProductsView&category=$1&brand=$2 [L,QSA]

RewriteRule ^products/([^/]+)/?$    index.php?module=ProductView&product_url=$1 [L,QSA]
RewriteRule ^products/?$    index.php?module=ProductsView [L,QSA]

RewriteRule ^brands/([^/]+)/?$    index.php?module=ProductsView&brand=$1 [L,QSA]
RewriteRule ^brands/([^/]+)/page_([^/]+)/?$    index.php?module=ProductsView&brand=$1&page=$2 [L,QSA]

# Поиск товаров
RewriteRule ^search/([^/]+)/?$    index.php?module=ProductsView&keyword=$1 [L,QSA]
RewriteRule ^search/?$    index.php?module=ProductsView [L,QSA]

# Блог
RewriteRule ^blog/([^/]+)/?$    index.php?module=BlogView&url=$1 [L,QSA]
RewriteRule ^blog/?$    index.php?module=BlogView [L,QSA]

# Корзина и заказы
RewriteRule ^cart/?$    index.php?module=CartView   [L,QSA]
RewriteRule ^cart/([^/]+)/?$    index.php?module=CartView&add_variant=$1  [L,QSA]
RewriteRule ^cart/remove/([^/]+)/?$    index.php?module=CartView&delete_variant=$1  [L,QSA]
RewriteRule ^order/([^/]+)/?$    index.php?module=OrderView&url=$1  [L,QSA]
RewriteRule ^order/?$    index.php?module=OrderView  [L,QSA]

# Для пользователей
RewriteRule ^user/login/?$    index.php?module=LoginView  [L,QSA]
RewriteRule ^user/register/?$    index.php?module=RegisterView  [L,QSA]
RewriteRule ^user/logout/?$    index.php?module=LoginView&action=logout  [L,QSA]
RewriteRule ^user/password_remind/?$    index.php?module=LoginView&action=password_remind  [L,QSA]
RewriteRule ^user/password_remind/([0-9a-z]+)/?$    index.php?module=LoginView&action=password_remind&code=$1  [L,QSA]
RewriteRule ^user/?$    index.php?module=UserView  [L,QSA]

# Статьи
RewriteRule ^articles/([^/]+)/?$    index.php?module=ArticlesView&category=$1 [L,QSA]
RewriteRule ^articles/?$    index.php?module=ArticlesView [L,QSA]
RewriteRule ^article/([^/]+)/?$    index.php?module=ArticlesView&article_url=$1 [L,QSA]
RewriteRule ^article/?$	index.php?module=ArticleView [L,QSA]

# Google sitemap
RewriteRule ^sitemap.xml?$    sitemap.php  [L,QSA]

# XML
RewriteRule ^yandex.xml?$    yandex.php  [L,QSA]

# feedback
RewriteRule ^contact/?$    index.php?module=FeedbackView  [L,QSA]

#downloads
RewriteRule ^order/([^/]+)/([^/]+)/?$    index.php?module=OrderView&url=$1&file=$2  [L,QSA]


# Статические страницы
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$    index.php?module=PageView&page_url=$1 [L,QSA]
RewriteRule ^/?$    index.php?module=MainView&page_url= [L,QSA]

# Ресайз картинок на лету
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^files/products/(.+) resize/resize.php?file=$1&token=%{QUERY_STRING}
#RewriteCond %{THE_REQUEST} ^GET\ (.*)files/products/(.*)\?([A-z0-9]*) 
#RewriteRule ^files/products/(.+) resize/resize.php?file=%2&token=%3 [L,NE]

# Ресайз картинок на лету

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^files/articles/(.+) resize/resizeart.php?file=$1&token=%{QUERY_STRING}
#RewriteCond %{THE_REQUEST} ^GET\ (.*)files/articles/(.*)\?([A-z0-9]*) 
#RewriteRule ^files/articles/(.+) resize/resizeart.php?file=%2&token=%3 [L,NE]

RewriteRule .* - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* - [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]


<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<IfModule mod_headers.c>
 <FilesMatch "\.(js|css|xml|gz)$">
   Header append Vary: Accept-Encoding
 </FilesMatch>
</IfModule>

### 1. Обработка js-файлов
<FilesMatch «\.js.gz$«>
ForceType text/javascript
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch «\.js$„>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !“.*Safari.*»
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule (.*)\.js$ $1\.js.gz [L]
ForceType text/javascript
</FilesMatch>

# Включаем кэш в браузерах посетителей
<IfModule mod_expires.c>
  <FilesMatch \.(gif|png|jpg|jpeg|ogg|mp4|mkv|flv|swf|wmv|asf|asx|wma|wax|wmx|wm|woff)$>
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 7 day"
  ExpiresByType image/gif "access plus 7 day"
  ExpiresByType image/png "access plus 7 day"
  <FilesMatch \.(css|js)$>
    ExpiresDefault "access plus 1 year"
  </FilesMatch>
  ExpiresByType text/css "access plus 1 year"
  ExpiresByType application/javascript "access plus 1 year"
</IfModule>

# сжатие text, html, javascript, css, xml:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>


 

при работе без SSL сертификата все работало хорошо, да и сейчас все остальное работает хорошо, кроме Last-Modified

Edited by snake
Link to post
Share on other sites

Попробуйте с вложения.

Если не поможет то полагаю что он теряется при редиректе.

Нужно будет поэкспериментировать...

Спасибо, разобрался.

Изначально в файле .htaccess допустил ошибку. Вместо этих двух редиректов:

# Редирект https
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

 

надо было писать следующее:

# Редирект https и с www на без www
RewriteBase /
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule (.*) https://site.ru/$1 [L,R=301]

 

Хотя сервис на котором проверял :

http://last-modified.com/ru/if-modified-since.html

определяет некорректно заголовки и на нем они и сейчас почему-то не проходят, хотя при проверке здесь:

www.tools.seo-​auditor.ru/if-modified-since/

все ок

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...