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?

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top