.htaccess 301 reindirizzamento di singola pagina
-
07-07-2019 - |
Domanda
Dopo una riprogettazione del sito, ho un paio di pagine che devono essere reindirizzate. Tutto rimane nello stesso dominio, solo un paio di cose sono state riorganizzate e / o rinominate. Sono nella forma:
/contact.php
è ora:
/contact-us.php
Usando il file .htaccess, ho aggiunto questa riga, che è quella che trovo maggiormente consigliata:
RedirectMatch 301 /contact.php /contact-us.php
Questo va principalmente bene - fa il lavoro - il problema è, reindirizza anche:
- /team1/contact.php
- /non-existant-folder/contact.php
C'è un modo per specificare che voglio solo reindirizzare contact.php nella radice?
Soluzione
RedirectMatch
utilizza un espressione regolare che corrisponde al percorso URL. E la tua espressione regolare /contact.php
significa solo qualsiasi percorso URL che contiene /contact.php
ma non qualsiasi percorso URL che è esattamente /contact.php
. Quindi usa le ancore per l'inizio e la fine della stringa ( ^
e $)
:
RedirectMatch 301 ^/contact\.php$ /contact-us.php
Altri suggerimenti
Questo dovrebbe farlo
RedirectPermanent /contact.php /contact-us.php
redirect 301 /contact.php /contact-us.php
Non ha senso utilizzare la regola di reindirizzamento e quindi scrivere i collegamenti in modo che corrispondano esattamente. Se non includi non devi escludere! Usa il reindirizzamento senza corrispondenza e quindi utilizza i link normalmente
Puoi anche usare un RewriteRule se vuoi l'abilità per modellare gli URL di corrispondenza e reindirizzamento.
Se preferisci utilizzare la la soluzione più semplice possibile a un problema, un'alternativa a RedirectMatch è, più semplice, Reindirizzamento direttiva.
Non utilizza il pattern matching e quindi è più esplicito e più facile da comprendere per gli altri.
cioè
<IfModule mod_alias.c>
#Repoint old contact page to new contact page:
Redirect 301 /contact.php http://example.com/contact-us.php
</IfModule>
Le stringhe di query devono essere riportate perché i documenti dicono:
Saranno ulteriori informazioni sul percorso oltre al percorso URL corrispondente aggiunto all'URL di destinazione.
Reindirizzerà la pagina del tuo negozio alla pagina dei contatti
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Redirect 301 /storepage /contactpage
</IfModule>