Ma seadistan a mod_rewrite reegel, mis suunab ebaõnnestunud lehed kohandatud lehele "Lehte ei leitud". Seda WordPressi puhul. Olen kasutanud Apache saidi veebiõpetust ja siiani näevad minu reeglid välja sellised:

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+) http://example.com/?page_id=254 [R] 

See töötab. Tundub, et see on kombinatsioon esimesest ja teisest ettepanekust, mis toimis, kuna -U lipp ei teinud midagi.

Minu küsimus on uudishimust, miks juhtub järgmine: kui ma muutun REQUEST_FILENAME kuni REQUEST_URI (nagu soovitab teine ​​näide), leht laaditakse, kuid laadib ükski stiilileht.Kogu minu vormindus on kadunud ja seda juhtub igal lehel. Kas keegi suudaks mõelda, miks see nii võib juhtuda?

  • Tehes välise ümbersuunamise, mis peaks olema "404-faili ei leitud", tagastate lõpuks kliendile vale HTTP-olekukoodi. st. a 302 (ajutine Redirect), 404 asemel ErrorDocument on õige lähenemine, nagu on üksikasjalikult kirjeldatud Tadamsoni vastuses.

Kohandatud 404-de seadistamiseks peaksite saama seda teha palju lihtsamalt (isegi .htaccessis), näiteks:

ErrorDocument 404 http://example.com/?page_id=254 

Vaadake ka: ErrorDocument

Vähem räpane ja oluliselt vähem protsessori kasutamist ühe päringu kohta kui mod_rewrite - kõik, mis 404s lihtsalt sinna läheb, küsimusi ei esitata. Ma kaaluksin kindlasti võimaluse korral mis tahes errordoci tegemist staatilise lehena, eriti kui venitate seda muude vigade käsitsemiseks (pole lõbus, kui teie 500 errordoc viskab 500 vea).

  • Pange tähele, et kui määrate absoluutne URL (nagu ülalpool) tõrke dokumendi puhul saab selle väline ümbersuunamine kui tõrke dokument käivitatakse - mis pole üldjuhul soovitav. Tavaliselt soovite määrata juurte suhtelise tee (alustades kaldkriipsuga), mis kirjutab seejärel päringu sisemiselt ümber.

Väga imelik. FF-is saate silumiseks kasutada Firebugi või Tamperi andmeid. Vaadake ka lähtekoodi (Ctrl + U) ja klõpsake selles stiililehe linkimiseks. Vaadake ka veakonsooli (Cntl + Shift + j).

Kui räägite WordPressist, võib see juba ümbersuunamisi kasutada REQUEST_URI ei ole seatud sellele, mida ootate - ja seega ebaõnnestub. Näiteks kui selle juurde pääseb ?page_id=100, siis võib päringu URI olla tegelikult tühi string. Isegi kui see võib kasutada index.php kulisside taga, teie tingimuslikul ajal, seda tõenäoliselt ei määrata.

Saate mod_rewrite silumise sisse lülitada, et näha mustri sobitamise erinevaid samme ja soovitan teil seda teha, kui soovite teada saada, mis toimub. :)

RewriteCond %{REQUEST_FILENAME} !-f 

Minu küsimus on uudishimust, miks juhtub järgmine: kui ma muutun REQUEST_FILENAME kuni REQUEST_URI (nagu soovitab teine ​​näide), leht laaditakse, kuid laadib ükski stiilileht. Kogu minu vormindus on kadunud ja seda juhtub igal lehel.

REQUEST_FILENAME ja REQUEST_URI sisaldavad kataloogi htaccess-failides erinevaid väärtusi. REQUEST_FILENAME on faili täielik kohaliku failisüsteemi tee, kusjuures REQUEST_URI on taotletud URI teekomponent (mis ei pruugi olla failisüsteemi tegelik fail).

-f testib, kas TestString on tavaline fail, mida REQUEST_URI sageli ei ole - ilmselt sellepärast suunatakse teie stiilitabelite taotlused ümber.

Tundub siiski, et REQUEST_URI teie põhilehte vaadatakse tavalise failina (või esimesena jõuavad taotluseni teised direktiivid). See sõltub teie URL-i struktuurist ja võimalikest muudest .htaccess-faili direktiividest.

none: Charles Robertson | none