.htaccess, konfiguroi ja testaa | Yleistä johdantoa, 404 ei löydy

Käytämme Apache-palvelinta .config-tiedostolla pysyvien 301-uudelleenohjausten tekemiseksi.

Sivustoa ylläpidetään enimmäkseen ja sisältöä toimittaa asiakas. Tämä verkkosivusto muuttuu hyvin usein, joten minua pyydetään usein lisäämään 301 uudelleenohjaukseen sivujen muuttuessa.

Tämä on johtanut useisiin uudelleenohjauksiin samoille URL-osoitteille kuin alla:

Redirect 301 '/foo/old' '/foo/new' Redirect 301 '/foo/old' '/foo/bar/new' Redirect 301 '/foo/old' '/new/foo' 

Mitä näistä uudelleenohjauksista apache käyttää? Configtest kertoo minulle, että syntaksit ovat kunnossa.

  • En voi kommentoida, koska minulla ei ole mainetta :-) Vastauksista ja kommenteista on kuitenkin ollut eniten hyötyä, kiitos. Suorituskyvyn vuoksi emme käytä mod_rewrite- tai htaccess-tiedostoja, vaan juuressa redirect.conf-tiedostoa. Tarkistin tämän eilen käyttämällä URL-osoitetta, jonka tiedän olevan kopioitu. Outoa, se näyttää käsittelevän viimeistä sääntöä, ei ensimmäistä. Ehkä parempi tapa sanoa on, että se jotenkin ohjaa kelvolliseen URL-osoitteeseen. Haluan lisätä, että "vanhemmat" URL-osoitteet eivät useinkaan ole enää voimassa.

Mitä näistä uudelleenohjauksista apache käyttää?

Apache käsittelee .Htaccess-tiedoston ylhäältä alas. Kun ehto täyttyy, se käsittelee ehdon. Kun olet valmis, Apache aloittaa yläosasta ja käsittelee kaikki säännöt uudelleen varmistaakseen, että vastaavia ehtoja ei ole enää.

Käyttämällä esimerkkiäsi, kun ensimmäinen sääntö

Redirect 301 '/foo/old' '/foo/new' 

on sovitettu ehtoa vastaavaksi '/foo/old' se käsittelee säännön ja alkaa uudelleen. Pyyntö on kuitenkin nyt '/foo/new' ja se ei vastaa mitään sääntöissä määriteltyä ehtoa. Siksi vain esimerkkisi ensimmäistä sääntöä voidaan käsitellä. Sinulla tulisi olla vain yksi sääntö ehtoa kohden.

  • En tiennyt siitä mod_redirect tekee useita syöttöjä sääntöjen ottamiseksi. Toisin kuin mod_rewrite se ei sisällä sisäisesti muokkaa URL-osoitetta, joten en ymmärrä miksi sen pitäisi.
  • Perustin tämän Apachen vanhempaan toimintaan jo sinä päivänä, kun tutkin Apachea tarkasti. Tuolloin kaikki .Htaccess-säännöt tallennettiin välimuistiin ja käsiteltiin ylhäältä alas, kunnes prosessit tyhjennettiin. Voit silti testata tätä luomalla sääntöjä, joiden tulisi käsitellä muokattu pyyntö. Siksi ihmiset joutuvat ehtoihin. Eri moduuleista en muista toisiaan. On kuitenkin mahdollista, että kuvaamani skenaario soveltuu uudelleenkirjoittamiseen eikä uudelleenohjaamiseen. Se on testattava. Hyvä pointti! Kippis!!
  • @StephenOstermiller unohdin merkitä sinut viimeisimpään kommenttiin. Anteeksi. Joko niin, neuvo on sama. Luo yksi vastaava sääntö. Mikä olisi tarkoitus olla enemmän kuin yksi? Mikään, jota en näe. Kippis!!
  • Olen lukenut jonkin verran. .Htaccess-tiedostoa ei enää tallenneta välimuistiin. Se löydetään ja luetaan per pyyntö. Samoin tiedostoa käsitellään edelleen järjestyksessä ylhäältä alas ja jos useita .Htaccess-tiedostoja on olemassa, kuten juuren alihakemistossa, säännöt käsitellään löytämässään järjestyksessä. Tämä tarkoittaa hierarkian lukemista aakkosjärjestyksessä ylhäältä alas. Tämä tarkoittaa, että juuren sääntö voi korvata yhden alihakemistossa. Tämä on sama käytös kuin ennen, ajattelin vain mainita sen. Voi lisätä vastausta myöhemmin. Luen edelleen ...
  • Minun on lisättävä, että Apache v.1: stä v.2.2: een suunnittelin eri asennusten kääntämisen ja tutkin käyttäytymistä suoritettavien tiedostojen työkaluilla. Paljon on muuttunut v.2: n julkaisun jälkeen. En ole seurannut yksityiskohtia v.2.2: n jälkeen.

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