PDA

View Full Version : [Htaccess] Redirect per url non esistente


robertino_salemi
01-04-2019, 14:59
Buongiorno,
spero di scrivere nella sezione corretta.

Nel mio dominio attualmente ho:
- root > file index.php e file .htaccess
- ./shop > contiene l'intero sito web in Wordpress

Il contenuto del file htaccess:

RewriteEngine on
RewriteCond %{HTTP_HOST} nomesito.it [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /shop/$1 [L]

cosi che l'utente viene indirizzato nel cartella /shop

Vorrei che quando l'utente digita un URL non esistente "Not Found" non gestibile da Wordpress quindi al di fuori della cartella /shop venga reindirizzato a quest'ultima.

Cosa devo aggiungere alla mie regole già esistenti?

Grazie!

Kaya
01-04-2019, 16:55
Redirect 404 /shop/
Dovrebbe essere sufficiente

robertino_salemi
01-04-2019, 17:20
Redirect 404 /shop/
Dovrebbe essere sufficiente

Grazie, ma non funziona...

Kaya
02-04-2019, 08:34
Scusa ho scritto una cazzata,
non è Redirect 404 ma ErrorDocument

RIF: https://httpd.apache.org/docs/2.4/custom-error.html

robertino_salemi
02-04-2019, 11:20
Scusa ho scritto una cazzata,
non è Redirect 404 ma ErrorDocument

RIF: https://httpd.apache.org/docs/2.4/custom-error.html

Grazie, ieri ho integrato le seguente linee:

# or map them to one error document:
#RewriteCond %{REQUEST_URI} ^/404/$ [OR]
#RewriteCond %{REQUEST_URI} ^/500/$
#RewriteRule ^(.*)$ /shop/index.php [L]


Funziona correttamente, e' corretto oppure no?

Grazie.

Kaya
02-04-2019, 12:14
Grazie, ieri ho integrato le seguente linee:

# or map them to one error document:
#RewriteCond %{REQUEST_URI} ^/404/$ [OR]
#RewriteCond %{REQUEST_URI} ^/500/$
#RewriteRule ^(.*)$ /shop/index.php [L]


Funziona correttamente, e' corretto oppure no?

Grazie.

Essendo commentate non capisco come possano funzionare

robertino_salemi
02-04-2019, 16:14
Si, ovviamente si tratta di un errore di copia-incolla, le righe non sono commentate!

Mi sono accorto comunque non sempre funziona, forse e' stata una coincidenza...

Ho aggiungo la riga

ErrorDocument 404 /shop/index.php


Mi sono accorto comunque che viene fatto il redirect nella pagina indicata, ma nella barra degli indirizzi viene visualizzato l'URL sorgente, non quello di destinazione.

Kaya
04-04-2019, 09:12
Si, ovviamente si tratta di un errore di copia-incolla, le righe non sono commentate!

Mi sono accorto comunque non sempre funziona, forse e' stata una coincidenza...

Ho aggiungo la riga

ErrorDocument 404 /shop/index.php


Mi sono accorto comunque che viene fatto il redirect nella pagina indicata, ma nella barra degli indirizzi viene visualizzato l'URL sorgente, non quello di destinazione.

Ovviamente si comporta così.
Quella è una direttiva che dice che se NON trova la pagina (404) allora mostra quell'altra pagina.
Devi fare un redirect forzato. Ad esempio



ErrorDocument 404 /shop/redirect.php


Crei un file redirect.php
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: /shop/index.php" );
?>

E così funzion

robertino_salemi
04-04-2019, 14:56
Perfetto, ha funzionato correttamente.

Grazie della soluzione! :)