Opencart 1.5.6.4 Больше, чем пол года назад поставила сертификат SSL, до этого был .htaccess стандартный и ТИЦ поднимался постепенно, но после того, как установила HTTPS ТИЦ сразу упал, затем поднялся до 20 и все, уже полгода на одном месте. На сайтах проверяла и везде пишет склейку доменов. В Яше и Гугле все страницы давным давно переиндексировались и http уже нет .htaccess не сама настраивала, обращалась к фрилансерам Подскажите, пожалуйста, как правильно настроить .htaccess именно для HTTPS? Т.е убрать эту склейку, скорее всего она тормозит ТИЦ. Заранее благодарю! Код: #php_value sesion.save_path /home/c/***/***/tmp Options +FollowSymlinks # Prevent Directoy listing Options -Indexes <FilesMatch "\.(tpl|ini|log)"> Order deny,allow Deny from all </FilesMatch> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteBase / RewriteRule ^(contact)$ index.php?route=information/$1 RewriteRule ^(account/return/insert)$ index.php?route=$1 RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^product-reviews$ index.php?route=product/allreviews [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{QUERY_STRING} ^route=common/home$ ErrorDocument 404 / ErrorDocument 403 / ### Additional Settings that may need to be enabled for some servers ### Uncomment the commands by removing the # sign in front of it. ### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that. # 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it: php_flag register_globals off # 2. If your cart has magic quotes enabled, This may work to disable it: php_flag magic_quotes_gpc Off # 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try # php_value upload_max_filesize 999M # 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value post_max_size 999M # 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_execution_time 200 # 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_input_time 200 # 7. disable open_basedir limitations # php_admin_value open_basedir none php_flag display_errors off php_flag display_startup_errors off # compress text, HTML, JavaScript, CSS, and XML AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # remove browser bugs BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent ## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType application/javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" ExpiresByType text/css "access plus 7 day" ExpiresByType text/html "access plus 7 day" ExpiresByType text/x-javascript "access 1 year" ExpiresByType image/gif "access plus 1 week" ExpiresByType image/png "access plus 1 week" ExpiresByType image/jpeg "access plus 1 week" ExpiresByType image/jpg "access plus 1 week" ExpiresByType application/pdf "access plus 1 week" ExpiresByType image/x-icon "access plus 1 year" ExpiresByType application/x-shockwave-flash "access plus 7 day" ExpiresDefault "access plus 1 week" # Cache-Control <ifModule mod_headers.c> # 30 суток <filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 суток <filesMatch ".(css|js)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 2 суток <filesMatch ".(xml|txt)$"> Header set Cache-Control "max-age=172800, public, must-revalidate" </filesMatch> # 1 сутки <filesMatch ".(html|htm|php)$"> Header set Cache-Control "max-age=172800, private, must-revalidate" </filesMatch> </IfModule> ## EXPIRES CACHING ##
Склейка ничего не тормозит. Она как раз и гарантирует, что весь ТИЦ, который был на http версии перейдёт на https. Которые в .htaccess понимают не больше вас. Тут с редиректами полнейшая каша! Есть несколько простых правил (что-то из этого касается любого движка, остальное - только ОК). 1. Блок редиректов всегда начинается с этих двух строк, которые идут подряд: Код: RewriteEngine on RewriteBase / Если движок установлен не в корне домена, то вместо слеша путь от корня домена до директории движка. 2. В случае ОК все редиректы (что связанные с https или www, что связанные с сайтмапом или ещё какими-то конкретными перенаправлениями) должны обязательно быть до этого блока строк: Код: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] Иначе можно получить самые разнообразные глюки со ссылками. 3. Порядок строк имеет значение и RewriteCond не может просто болтаться без следующей за ней RewriteRule, потому что RewriteCond - это только проверка определённого условия, за которой должно следовать действие на случай успешного прохождения проверки. Исходя из этого, последняя строка в блоке редиректов сейчас не имеет смысла. 4. Если у вас есть редирект с www на без www и сайт использует https - обязательно редирект должен быть сразу на https версию (а у вас сейчас на http) иначе получиться, что при заходе с www по http вместо одного редиректа будет два последовательных. Ну, и очень желательно располагать все редиректы в логической последовательности от более глобальных (https или www) и до редиректов отдельной страницы. Основываясь на всём вышесказанном блок редиректов должен выглядеть так: Код: RewriteEngine on RewriteBase / RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] RewriteCond %{QUERY_STRING} ^route=common/home$ RewriteRule ^(.*)$ https://%{HTTP_HOST} [R=301,L] RewriteRule ^(contact)$ index.php?route=information/$1 RewriteRule ^(account/return/insert)$ index.php?route=$1 RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^product-reviews$ index.php?route=product/allreviews [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] Вот это и есть правильный .htaccess с точки зрения всех редиректов. Но рост ТИЦ он не гарантирует никоим образом. Максимум, что он может хоть как-то обеспечить - это восстановление того ТИЦ, который был до перехода на https.
Большое спасибо! Буду разбираться --- Добавлено, 17 июл 2017 --- Сделала по Вашей рекомендации, только вот не пойму, точнее не обращала внимания, у меня почему то на сайте значек в гугле хроме браузере показывает, что мол сайт защищен не полностью. Может быть у меня что-то лишнее в файле, что совсем не нужно и мешает? На сайте использую memcaсhe, а в файле вижу, что про файловый кеш написано. К сожалению не я файл правила и для чего там были прописаны дополнения вообще не понимаю, единственное я сама прописывала в конфиге использование memcaсhe, вместо Файлового кеша, т.к. поставила модуль BOOST (лицензию) Сравнила с родным файлом .htaccess, который при установке получается, у меня файл намного больше, вот и думаю, может что удалить из файла, что у меня здесь ненужное? Упорядочила так: Код: #php_value sesion.save_path /home/c/cotto36k/new-loress/tmp Options +FollowSymlinks # Prevent Directoy listing Options -Indexes # Prevent Direct Access to files <FilesMatch "\.(tpl|ini|log)"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings RewriteEngine on RewriteBase / RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteRule ^(contact)$ index.php?route=information/$1 RewriteRule ^(account/return/insert)$ index.php?route=$1 RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^product-reviews$ index.php?route=product/allreviews [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] RewriteCond %{QUERY_STRING} ^route=common/home$ ErrorDocument 404 / ErrorDocument 403 / ### Additional Settings that may need to be enabled for some servers ### Uncomment the commands by removing the # sign in front of it. ### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that. # 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it: php_flag register_globals off # 2. If your cart has magic quotes enabled, This may work to disable it: php_flag magic_quotes_gpc Off # 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try # php_value upload_max_filesize 999M # 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value post_max_size 999M # 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_execution_time 200 # 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_input_time 200 # 7. disable open_basedir limitations # php_admin_value open_basedir none php_flag display_errors off php_flag display_startup_errors off # compress text, HTML, JavaScript, CSS, and XML AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # remove browser bugs BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent ## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType application/javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" ExpiresByType text/css "access plus 7 day" ExpiresByType text/html "access plus 7 day" ExpiresByType text/x-javascript "access 1 year" ExpiresByType image/gif "access plus 1 week" ExpiresByType image/png "access plus 1 week" ExpiresByType image/jpeg "access plus 1 week" ExpiresByType image/jpg "access plus 1 week" ExpiresByType application/pdf "access plus 1 week" ExpiresByType image/x-icon "access plus 1 year" ExpiresByType application/x-shockwave-flash "access plus 7 day" ExpiresDefault "access plus 1 week" # Cache-Control <ifModule mod_headers.c> # 30 суток <filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 30 суток <filesMatch ".(css|js)$"> Header set Cache-Control "max-age=2592000, public" </filesMatch> # 2 суток <filesMatch ".(xml|txt)$"> Header set Cache-Control "max-age=172800, public, must-revalidate" </filesMatch> # 1 сутки <filesMatch ".(html|htm|php)$"> Header set Cache-Control "max-age=172800, private, must-revalidate" </filesMatch> </IfModule> ## EXPIRES CACHING ## --- Добавлено, 17 июл 2017 --- loress.ru
Это никак не связано с .htaccess! Указание на неполную защищённость означает, что у вас на странице есть какой-то контент, который грузится по http. Это может быть, например, изображение вставленное в описание товара через визуальный редактор в админке. Такое исправляется только вручную, потому что ссылка не генерируется через ОК. Я сейчас посмотрел у вас главную страницу, случайную категорию и случайный товар - нигде проблем нет. А если вы увидите в рецепте салат масло, вы туда машинное нальёте? Кеши бывают разные и для разного. Всё, что связано с кешами в .htaccess - относится к кешированию файлов браузером и memcaсhe тут никаким боком не может быть альтернативой. Зачем вы оставили вот эту строку болтаться: Код: RewriteCond %{QUERY_STRING} ^route=common/home$ ? Во-первых, перечитайте пункт 2 в моём предыдущем сообщении, а затем прочитайте и пункт 3. А во-вторых, я же привёл этот редирект в рабочем виде, но вы его почему-то проигнорировали. У вас здесь пол файла - это ненужное! У вас на сервере за статику отвечает nginx, а потому всё связанное с кешированием и сжатием не имеет смысла. Можете удалить всё начиная со строки: Код: # compress text, HTML, JavaScript, CSS, and XML и до конца файла.
Правила для кеширования и сжатия статики имеют смысл только если этим занимается Апач, а я на 99% уверен, что у вас этим занимается nginx. Если сайт не на VDS, то доступа к конфигам nginx у вас нет, так что просите хостера это настроить. У вас дважды в файле Код: RewriteEngine On Вот этот блок: Код: # Редирект c www на без www RewriteCond %{HTTP_HOST} ^www.farm-apteka.com RewriteRule ^(.*)$ http://farm-apteka.com/$1 [R=301,L] Во-первых, в неправильном месте (об этом я выше уже подробно расписал), а во-вторых, не имеет смысла, ибо у вас уже есть код, который за это отвечает, вот он: Код: RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] И всё, что дальше этого блока тоже в неправильном месте. Внимательно перечитайте это моё сообщение: https://wmasteru.org/threads/Как-настроить-правильный-htaccess-для-https.25172/#post-183508
Всем привет. Не могу понять что произошло/ Некоторое время назад появился хвост /index.php?route=common/home Причем получается зеркало ведет на этот урл. Кто может помочь платно?