Onko 301-uudelleenohjaus vanhentuneesta verkkotunnuksesta hyvä Google SEO: lle? - SEO-salaliitto QA # 2

Teen uudelleenkirjoituksen kohteesta .htaccess tiedosto, jolla uudelleenohjataan kauniit linkit alkuperäisiin URL-osoitteisiin:

RewriteRule ^users/?$ /?status=users [NC,L,QSA] 

joka ohjaa SEO: n / melko linkin:

example.com/users 

oikeaan URL-osoitteeseen

example.com/?status=users 

Sitten taas haluan hakukone botin (tai kenenkään muun), joka yrittää päästä

example.com/?status=users 

301 ohjataan kauniiseen linkkiin

example.com/users 

Tiedän, että voisin saada myöhemmän osan valmiiksi

RewriteCond %{QUERY_STRING} (^|&)status=users($|&) RewriteRule ^$ /users? [L,R=301] 

Mutta en voi käyttää näitä kahta yhdessä, koska se pääsee loputtomaan silmukkaan ja selain näyttää "ohjasi sinut liian monta kertaa".

Luulen, että saan selville, mikä ongelma täällä on, mutta mikä on ratkaisu? Kuinka saavutan molemmat?

RewriteCond %{QUERY_STRING} (^|&)status=users($|&) RewriteRule ^$ /users? [L,R=301] 

Tarvitset vain ylimääräisen kunto (eli. RewriteCond direktiivi) ulkoinen uudelleenohjaus joka havaitsee, onko kyseessä käyttäjän suora / alkuperäinen pyyntö, toisin kuin a kirjoitettu uudelleen pyydä toisella uudelleenkirjoitusdirektiivilläsi.

Yksi tapa tehdä tämä on tarkistaa REDIRECT_STATUS ympäristömuuttuja. Tätä ei aseteta alkuperäiseen pyyntöön, mutta asetetaan arvoon "200" (kuten kohdassa 200 OK) ensimmäisen onnistuneen uudelleenkirjoituksen jälkeen. Joten voit tarkistaa, onko REDIRECT_STATUS on tyhjä suoran pyynnön havaitsemiseksi ja uudelleenohjaussilmukan estämiseksi.

Esimerkiksi:

RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{QUERY_STRING} (^|&)status=users($|&) RewriteRule ^$ /users? [L,R=301] 

Toinen tapa on tarkistaa THE_REQUEST palvelimen muuttuja, joka sisältää alkuperäisen pyynnön ensimmäisen rivin eikä muutu, kun URL-osoite kirjoitetaan uudelleen. Joten, kun pyydät example.com/?status=users suoraan, THE_REQUEST sisältää merkkijonon muodossa:

GET /?status=users HTTP/1.1 

Tämä antaisi sinulle vain yhden kunto, toisin kuin kaksi, kuten yllä, ehkä monimutkaisemman regexin kustannuksella. (Toteutus jätetään lukijan harjoitukseksi.)

työskennellyt sinulle: Charles Robertson | Haluatko yhteyttä?

hyödyllistä tietoa