Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλημέρα σε όλους και χρόνια πολλά,

Τις τελευταίες μέρες είπα να ασχοληθώ με τον χρόνο φόρτωσης μιας σελίδας μου και δοκίμασα κάποιες 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 :D ωστόσο όλες οι προτάσεις είναι καλοδεχούμενες και μπορώ να τις δοκιμάσω.
Σε κάθε περίπτωση, με συγχωρείτε για το μακροσκελές της δημοσίευσης.
Και πάλι χρόνια πολλά σε όλους με υγεία πάνω από όλα!

Επεξ/σία από WoodSell3r
Δημοσ.

Άσχετα με το τι λέει το 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.

Δημοσ.
Στις 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 και το πήρα πατριωτικά :D
Προτείνεις να το αφήσω έτσι δηλαδή για να είμαι και εντός πλαισίων HSTS;
Επίσης τα 5ms τα έβγαλες από τα logs του apache συγκρίνοντας την ώρα που σέρβιρε το 301 και ύστερα το 200 ή με κάποιο άλλο τρόπο;

Δημοσ.

Ναι το gtmetrix και τα υπόλοιπα αντίστοιχα sites δίνουν γενικές συμβουλές για το τι είναι καλύτερο θεωρητικά αλλά στην πράξη να μην είναι η βέλτιστη υλοποίηση. Για παράδειγμα μπορεί να προτείνουν να "ενώσεις" όλα τα css / js σε ένα αρχείο αλλά λόγο HTTP2 είτε στείλεις ένα αρχείο είτε πολλά δεν αλλάζει κάτι με την ταχύτητα.

Tα 5ms τα είδα από το https://tools.pingdom.com , μην μετρήσεις όμως το χρόνο για το DNS request μιας και κρατιέται στην cache οπότε στο επόμενο redirect το DNS request θα κάνει 0ms.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...