- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con redirect.... funzionante!
-
Problema con redirect.... funzionante!
Ciao, ragazzi.
Posto questo quesito. All'apparenza pluritrattato, ma mi sono letto tutti i thread e questi problemi non sono mai specificati. **Sono disposto a pagare per una consulenza. Eventualmente contattatemi in PVT., **semprechè qualcuno non mi dia gentilmente una mano quì.
Il problema è questo:
sto cercando di applicare il mod_rewrite. Per provare, ho creato questa regola sull'htaccess:
RewriteEngine on
RewriteRule ^prova.html /prova.php [R=301,L]Questa regola funziona benissimo. l'unico problema è che il redirect viene fatto dalla nuova pagina (HTML) alla vecchia, in PHP!
Visto poi che non funziona nemmeno con la formula:
RewriteEngine on
RewriteRule ^prova.html$ /prova.php
Redirect permanent prova.php prova.html (o al contrario, le ho provate tutte!)Questa regola idem, è perfettamente funzionante. Solo che il redirect viene totalmente ignorato! Se scrivo il nuovo url (prova.html) sul browser, la pagina è perfetta!
Così, ho pensato di lasciar perdere, e di fare solo la riscrittura con l'htaccess e il 301 da codice php.
Sull'htaccess ho creato la regola:
RewriteEngine on
RewriteBase /
RewriteRule ^prova.html$ /prova.phpPerfetta, inserendo prova.html sul browser, la pagina è esistente e funzionante.
ora, per il redirect, ho inserito ciò che segue all'inizio della pagina prova.php:
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.dominio.xxx/prova.php" );
?>Redirect perfettamente funzionante. Senonchè, per caricare la nuova pagina creata, ci vogliono 2 vite!!!!!
Ho paura che questo metodo crei uno strano loop durante la riscrittura della pagina.
Avete voglia di aiutarmi?
Grazie mille.
-
non capisco a cosa serva il redirect 301 (??)
Non basta solo il rewriting dell'indirizzo?
spiegati meglio
-
@probid said:
non capisco a cosa serva il redirect 301 (??)
Non basta solo il rewriting dell'indirizzo?
spiegati meglioGrazie intanto per avermi risposto
Il redirect serve per far capire a google che quella pagina è stata spostata, e per reindirizzare gli utenti (che magari da qualche link sparso arrivano ad una delle vecchie pagine in PHP)
Insomma, un classico mod_rewrite con redirect.
-
<?php
if($**_**SERVER[HTTP_REFERER]!="index.php"){
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.dominio.xxx/prova.php" );}
?>
E dovresti risolvere il problema del loop
-
no, ancora non va.... se vuoi provare a vedere.... vedi la pagina about_us.php
Scusa, comunque ho sbagliato a postare, prima... forse ti sei accorto. Sul redirect 301 il nome del file è prova.html, non PHP!
Devo reindirizzare verso le pagine html
-
Scusa avevo sbagliato io.
riprova così:
[php]<?php
if($_SERVER[HTTP_REFERER]!="about_us.php"){
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.dominio.xxx/about_us.html" );}
?>[/php]
-
No, idem.... poi ora mi sa che dopo un po va a cercare la index_en.php.
Cmq, ti segnalo che per un errore, ho scritto redirect > about_us.php, ma il reindirizzamento deve essere verso about_us.html
-
Esatto... vista la modifica...
Comunque, come ti avevo detto, non va bene.... Qualche altra idea?
Non si riesce solo inserendo il redirect direttamente sull'htaccess?
-
Ciao. Aggiorno il thread, visto che ho una novità.
Lasciamo perdere per un attimo il redirect da PHP.
Ho provato ad inserire sul server un redirect tipo:
Redirect 301 /VecchioUrl /NuovoUrl
nella quale NuovoUrl è un'altra pagina PHP esistente. Ciò significa, niente rewrite, ma solo un redirect. Il risultato è.... nulla! viene completamente ignorato!
Sarà un problema al server Apache, o un problema di qualche parametro da configurare?