WoodSell3r Δημοσ. 30 Απριλίου 2019 Δημοσ. 30 Απριλίου 2019 (επεξεργασμένο) Καλημέρα σε όλους και χρόνια πολλά, Τις τελευταίες μέρες είπα να ασχοληθώ με τον χρόνο φόρτωσης μιας σελίδας μου και δοκίμασα κάποιες online υπηρεσίες που προσφέρουν δωρεάν σχετικές αναφορές αφού φυσικά προηγηθεί το σκανάρισμα από τις αράχνες τους. Στα περισσότερα σημεία έχω καλό σκορ, πάνω από 90, και βαθμολογία Α ή Β. Ωστόσο σε μια κατηγορία είμαι στο F 😕 και συγκεκριμένα στο Avoid landing page όπως εμφανίζεται στο gtmetrix.com Η πρόταση που βγάζει το gtmetrix.com είναι η παρακάτω: Avoid landing page redirects for the following chain of redirected URLs. http://domain/ https://domain/ https://www.domain/ Από την μεριά μου, στον server, έχω ενεργοποιημένο το virtual host και ο Apache εξυπηρετεί πολλά website παράλληλα. Στο συγκεκριμένο domain είχα περάσει πιστοποιητικό https μέσω Let's Encrypt ωστόσο πρόσφατα άλλαξα τους nameservers σε αυτούς που προσφέρει το δωρεάν πλάνο του Cloudflare και πλέον το domain σερβίρεται με https που παρέχει το Cloudflare. Υπάρχουν 2 αρχεία ρυθμίσεων στο /etc/apache2/sites-available, το αρχικό που είναι για το http και την θύρα 80 και το δεύτερο αυτό που παράγεται μέσω του let's encrypt για το https. Παραθέτω παρακάτω το περιεχόμενο τους. domain.conf <VirtualHost *:80> ServerAdmin admin@domain ServerName domain ServerAlias www.domain DocumentRoot /var/www/html/domain/public_html LogLevel info ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html/domain/public_html> Options FollowSymLinks AllowOverride all Order allow,deny Require all granted </Directory> RewriteEngine on RewriteCond %{SERVER_NAME} =www.domain [OR] RewriteCond %{SERVER_NAME} =domain RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] <IfModule security2_module> SecRuleEngine Off </IfModule> </VirtualHost> domain-le-ssl.conf <IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin admin@domain ServerName domain ServerAlias www.domain DocumentRoot /var/www/html/domain/public_html LogLevel info ErrorLog /var/www/html/domain/logs/error.log CustomLog /var/www/html/domain/logs/access.log combined <Directory /var/www/html/domain/public_html> Options FollowSymLinks AllowOverride all Order allow,deny Require all granted </Directory> RewriteEngine on # Some rewrite rules in this file were disabled on your HTTPS site, # because they have the potential to create redirection loops. # RewriteCond %{SERVER_NAME} =www.domain [OR] # RewriteCond %{SERVER_NAME} =domain # RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] Include /etc/letsencrypt/options-ssl-apache.conf SSLCertificateFile /etc/letsencrypt/live/domain/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/domain/privkey.pem </VirtualHost> </IfModule> Στο /var/www/html/domain/public_html/.htaccess έχω στην αρχή του αρχείου τα παρακάτω και έπειτα συνεχίζω με ErrorDocument, gzip compression και λοιπά. RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L] IndexIgnore * Το θέμα είναι πως δεν γνωρίζω τι αλλαγές πρέπει να κάνω προκειμένου οι αιτήσεις από το http://domain (όπως επίσης και από οποιδήποτε άλλο) να πηγαίνουν απευθείας στο https://www.domain και να αποφεύγωτο ενδιάμεσο https://domain/ όπως συμβουλεύει και το gtmetrix. Άλλαξα κάποια πράγματα στο .htaccess αλλά κατέληξα σε infinite loop 😕 Υποψιάζομαι πως πρέπει να κάνω κάποια αλλαγή στο .htaccess αρχείο για να έχω μόνο ένα εσωτερικό redirect από ολες τις αιτήσεις στο https://www.domain αλλά επιφυλάσσομαι. Δεν γνωρίζω και πολλά με την σύνταξη γραμμών στο .htaccess. και επίσης δεν βοηθάει καθόλου το γεγονός ότι είμαι σε live server ωστόσο όλες οι προτάσεις είναι καλοδεχούμενες και μπορώ να τις δοκιμάσω. Σε κάθε περίπτωση, με συγχωρείτε για το μακροσκελές της δημοσίευσης. Και πάλι χρόνια πολλά σε όλους με υγεία πάνω από όλα! Επεξ/σία 30 Απριλίου 2019 από WoodSell3r
CyberCr33p Δημοσ. 30 Απριλίου 2019 Δημοσ. 30 Απριλίου 2019 Άσχετα με το τι λέει το gtmetrix, για να μην έχεις θέματα με το HSTS ο σωστός τρόπος είναι o παρακάτω: http://example.com --> http://www.example.com --> https://www.example.com ή το παρακάτω: http://example.com --> https://example.com --> https://www.example.com Το ένα παραπάνω redirect δεν δημιουργεί σημαντική καθυστέρηση. Από δοκιμές που έχω κάνει (τουλάχιστον με το δικό μου στήσιμο των servers) προσθέτει μόνο 5ms.
WoodSell3r Δημοσ. 1 Μαΐου 2019 Μέλος Δημοσ. 1 Μαΐου 2019 Στις 30/4/2019 στις 8:01 ΜΜ, CyberCr33p είπε Άσχετα με το τι λέει το gtmetrix, για να μην έχεις θέματα με το HSTS ο σωστός τρόπος είναι o παρακάτω: http://example.com --> http://www.example.com --> https://www.example.com ή το παρακάτω: http://example.com --> https://example.com --> https://www.example.com Το ένα παραπάνω redirect δεν δημιουργεί σημαντική καθυστέρηση. Από δοκιμές που έχω κάνει (τουλάχιστον με το δικό μου στήσιμο των servers) προσθέτει μόνο 5ms. Ευχαριστώ για την απάντηση. Το HSTS είναι αλήθεια πως δεν το έλαβα υπόψη καθόλου. Τα redirect που γίνονται στη περίπτωση μου είναι ως εξής: http://example.com --> https://example.com --> https://www.example.com και είναι η δεύτερη περίπτωση που προτείνεις για την ορθή λειτουργία. Σίγουρα το εξτρα redirect δεν το αντιλαμβάνεσαι καθόλου, απλά είδα κακή βαθμολογία στο αντίστοιχο πεδίο του gtmetrix και το πήρα πατριωτικά Προτείνεις να το αφήσω έτσι δηλαδή για να είμαι και εντός πλαισίων HSTS; Επίσης τα 5ms τα έβγαλες από τα logs του apache συγκρίνοντας την ώρα που σέρβιρε το 301 και ύστερα το 200 ή με κάποιο άλλο τρόπο;
CyberCr33p Δημοσ. 2 Μαΐου 2019 Δημοσ. 2 Μαΐου 2019 Ναι το gtmetrix και τα υπόλοιπα αντίστοιχα sites δίνουν γενικές συμβουλές για το τι είναι καλύτερο θεωρητικά αλλά στην πράξη να μην είναι η βέλτιστη υλοποίηση. Για παράδειγμα μπορεί να προτείνουν να "ενώσεις" όλα τα css / js σε ένα αρχείο αλλά λόγο HTTP2 είτε στείλεις ένα αρχείο είτε πολλά δεν αλλάζει κάτι με την ταχύτητα. Tα 5ms τα είδα από το https://tools.pingdom.com , μην μετρήσεις όμως το χρόνο για το DNS request μιας και κρατιέται στην cache οπότε στο επόμενο redirect το DNS request θα κάνει 0ms.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα