Ho provato a forzare il protocollo HTTPS, come descritto qui, ma non mi funziona.
Grazie
Ho provato a forzare il protocollo HTTPS, come descritto qui, ma non mi funziona.
Grazie
Ti consiglierei di controllare nel file di configurazione se è possibile attivare ssl.
Altrimenti, l'unica altra cosa che puoi fare (se non lo hai già fatto), è forzare in .htaccess https:
Ciao!Codice:RewriteEngine On RewriteBase / RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule .* https://esperatempo.altervista.org%{REQUEST_URI} [L,R=301]
Ultima modifica di alemoppo : 29-03-2023 alle ore 17.04.11
regolamento altervista_______________ regolamento forum
Come ho detto all'inizio, ho inserito il codice nel file .htaccess, ma non funziona. Da yii è possibile richiamare un singolo indirizzo con HTTPS, ma se un utente richiama un indirizzo senza HTTPS, non riesco a trasformarlo in HTTPS (ho già provato), perché altervista dà errore, probabilmente perché non accetta il redirect. In pratica sostituisco HTTP con HTTPS nell'indirizzo e faccio un redirect al nuovo indirizzo, ma il server di altervista mi dice che non riesce a caricare la pagina.
Salve,
rilevo il sito correttamente reindirizzato vs https.
Ha quindi risolto nel frattempo?
Saluti
Puoi impostare https abilitato solo quando lo è. Cioè solo se con protocollo https altrimenti non devi avere la variabiletradotto nel codice phpCodice PHP:
$_SERVER['HTTPS'] = 'on';
Mentre il file .htaccess significa tradotto nel server web (RewriteRule riscrittura) prima che php ne venga a conoscenza e di fatto il redirect esiste.
Web sniffer con intestazione tra cui Location e la pagina html generata dal server web per il redirect https://websniffer.com/?url=http://e...ltervista.org/
Con sistema operativo o browser datati che ti dice esattamente per il certificato ISRG Root X1? (Come nel tuo dominio). Dire solo sito non sicuro può essere un falso positivo e quindi gentilmente condivida un screenshot tramite url di condivisione online.
Ultima modifica di darbula : 30-03-2023 alle ore 13.49.36
Ho provato anche a reindirizzare verso https da codice, sostituendo http con https, ma il server altervista mostra il seguente messaggio:
"Questa pagina non reindirizza in modo corretto."
"Si è verificato un errore durante la connessione a esperatempo.altervista.org."
"Questo problema spesso è causato dal blocco o dal rifiuto dei cookie."
Salve,
facendo delle prove poco fa (non so esperatempo aveva modifcato in precedenza il file .htaccess), ma io ho visto questo:
Se nella barra del browser si mette solo il dominio, sia con protocollo HTTP che senza, il redirect verso HTTPS avviene. Se si prova invece direttamente dalla pagina (la quale viene reinderizza dal dominio con percorso /basic/web/post/list.html), sia con HTTP che senza, il redirect verso HTTPS non avviene.
Adesso come ha impostato il redirect?
Potrebbe cortesemente mostrare il contenuto del file .htaccess?
Tenga anche presente che le modifiche nel file .htaccess non hanno effetto immediato ed è buona pratica pulrire sempre la cache del browser per ogni prova (ho voluto farlo presente anche se magari ciò lo sa già).
Cordiali saluti.
Ultima modifica di GraphOGLRisorse : 30-03-2023 alle ore 15.18.37
Ho appena fatto le stesse prove e confermo.
Eccolo:Potrebbe cortesemente mostrare il contenuto del file .htaccess?
# # av:php5-engine
AddHandler av-php82 .php
# # av:Toolbar
SetEnv AV_TOOLBAR 0
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule .* http
A meno che non abbia sbagliato a riportare qui il contenuto del file .htaccess, quel redirect così è sbagliato.
Era forse l'ultima modifica/prova che avaeva fatto?
La forma corretta è questa:
Cordiali saluti.Codice:RewriteEngine On RewriteBase / RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule .* https://esperatempo.altervista.org%{REQUEST_URI} [L,R=301]
Ultima modifica di GraphOGLRisorse : 30-03-2023 alle ore 16.04.38
Generalmente, le modifiche nel file .htaccess hanno effeto dopo circa 30 minuti.
Cordiali saluti.
Visto che ha un redicert verso /basic/web/post/list.html e che nel file .htaccess mostrato c'è solo il redirect verso HTTPS, mi viene qualche dubbio.
Esiste un altro file .htaccess oltre a quello presente nella root del sito?
Il redirect verso list.html lo ha generato via .htaccess o in altro modo?
Ha per caso messo il redirect verso HTTPS in un altro file .htaccess presente in una sotto cartella?
Cordiali saliuti.
Ultima modifica di GraphOGLRisorse : 30-03-2023 alle ore 18.13.34
Modificare il file basic/web/.htaccess in
la precedenza è per forzare in https tramite RewriteRuleCodice:RewriteEngine on RewriteBase /basic/web/ RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTPS} off RewriteRule .* https://esperatempo.altervista.org%{REQUEST_URI} [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php [L]
Dunque, intanto la ringrazio per l'attenzione e per l'attenta analisi del mio problema. Premetto, che pur essendo programmatore da una vita, non mi sono mai addentrato nel mondo Apache e non ho pertanto la minima idea di come funzioni anche un solo comando. Cerco quindi di rispondere a ogni sua domanda:
Sì, ne esiste uno nella sottocartella "basic/web", che dovrebbe servire, a quanto ricordo, a evitare di scrivere nell'indirizzo la stringa "index.php". Il contenuto è questo:Esiste un altro file .htaccess oltre a quello presente nella root del sito?
Options +FollowSymLinks
# Do not uncomment next line
# IndexIgnore */*
RewriteEngine on
# Uncomment next line when uploading to the host
RewriteBase /basic/web/
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule ^. index.php
Inoltre la classe UrlManager del framework Yii è impostata come segue, per far sì che l'indirizzo appaia con la terminazione ".html". La regola nella sezione "rules", serve a far sì che l'eventuale parametro "id" non compaia nell'indirizzo come parametro, ma come sotto cartella (cioè ad esempio ".../event.html?id=1" diventa ".../event/id/1.html"):
Codice PHP:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'suffix' => '.html',
'rules' => [
'<controller:(([\w-]+/)?)+[\w-]+>/<action:[\w-]+>/<id:\d+>' => '<controller>/<action>',
],
],
Il redirect verso l'azione post/list (alla quale viene aggiunta dall'UrlManager la terminazione .html) viene fatta da codice PHP all'interno dell'azione principale dell'applicazione (cioè site/index) nel seguente modo:Il redirect verso list.html lo ha generato via .htaccess o in altro modo?
Codice PHP:
class SiteController extends BaseController
{
public function actionIndex()
{
/* Crea l'indirizzo col protocollo 'https' se no localhost */
$this->redirect(Url::to(['/post/list'], !localhost() ? 'https' : ''));
}
L'unico altro file .htaccess presente nel sito è quello che ho mostrato sopra.Ha per caso messo il redirect verso HTTPS in un altro file .htaccess presente in una sotto cartella?
Grazie
Quindi il file .htacces dove ha messo il redirect verso HTTPS è quello che sta nella root.
Direi di seguire il suggerimento di darbula.
Cordiali saluti.
http://esperatempo.altervista.org/basic/web/index.php?post=list
Il file htaccess originale dice: se non una directory o un file regolare redirect interno a /basic/web/index.php che con enablePrettyUrl viene riscritto (ma prima il .htaccess lo riscrive con protocollo https).
Credo il problema è impostare $_SERVER['HTTPS'] = 'on'; solo quando il web server sta usando il protocollo https altrimenti yii non riesce.
Forse se ho tempo creo il codice php da aggiungere al file index.php che controlla host e https.
Ultima modifica di darbula : 01-04-2023 alle ore 16.04.52
Ok, grazie.
Puoi provare tale codice su basic/web/index.phpCodice PHP:
empty($_SERVER);
if(isset($_SERVER['HTTP_HOST'])) {
$www = null;
$_SERVER['HTTPS'] = 'off';
$pattern = '/\\A(www\\.)?esperatempo\\.([a-z.]+)/i';
preg_match($pattern, $_SERVER['HTTP_HOST'], $matches);
if($matches) {
// Con www
if($matches[1]) {
$matches = array($matches[0], 'www.', $matches[2]);
if($www && isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}
} elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}
}
}
Hai provato con il return?
Il codice che crea $_SERVER['HTTPS'] va prima
Codice PHP:
class SiteController extends BaseController
{
public function actionIndex()
{
// stop executing this action and redirect to page $url
if(isset($_SERVER['HTTPS']) && strcasecmp('on', $_SERVER['HTTPS']) === 0){
Url::to(['/post/list'], !localhost() ? 'https' : '');
} else {
return $this->redirect(Url::to(['/post/list'], !localhost() ? 'https' : ''));
}
}
Ultima modifica di darbula : 02-04-2023 alle ore 20.18.45