Slik avinstallerer du Wordpress (manuelt) Wordpress Tips og triks!

Her er min nåværende omskrivingskode i htaccess-filen min:

RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301] 

Jeg vil gjerne legge til en linje som stopper www. fremover hvis HTTP_HOST er den dev domene for nettstedet.

  • Falske Dev Eksempel: food.example.dev
  • Falske produksjonseksempler: food.example
  • For øyeblikket vil dev-domene omdirigere til www.food.example.dev
  • food.example skal videresende til www.food.example
  • men food.example.dev skal ikke videresende til www.food.example.dev

Hva ville være en god måte å håndtere dette på? Jeg har prøvd et par forskjellige scenarier. Jeg tror å legge til http til https der inne kan det også være kompliserende ting på grunn av [OR].

Jeg tror å legge til http til https der inne også kan være kompliserende

Ja, ovennevnte (generiske) direktiver er både ikke www til www og HTTP til HTTPS. Med måten disse direktivene er skrevet på, kan du ikke ha det ene uten det andre.

For å ekskludere dev-domenet ditt fra disse direktivene - som fjerner www og HTTPS-omdirigering fra dev-domenet ditt, så kan du bare legge til et unntak (et tillegg RewriteCond direktiv) til toppen. For eksempel:

RewriteCond %{HTTP_HOST} !^food\.example\.dev [NC] RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301] 

Hvis den valgte verten ikke starter med food.example.dev (ditt dev-domene) fortsett deretter som normalt.

Imidlertid, hvis du fortsatt vil omdirigere dev-domenet ditt til HTTPS, men ikke www, må du dele din nåværende regel i to.

For eksempel:

# 1. www to non-www (excluding dev domain) RewriteCond %{HTTP_HOST} !^food\.example\.dev [NC] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301] # 2. HTTP to HTTPS (all domains) RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=301] 

Dette opprettholder maksimalt en enkelt omdirigering. Men hvis du planlegger å implementere HSTS, må du reversere disse to reglene og omdirigere til HTTPS først og potensielt få maksimalt to omdirigeringer.

Du kan ekskludere alle forespørsler til ditt dev-domene (dvs. alle underdomener) ved å endre CondPattern til !\.example\.dev. dvs. Gjør ikke inneholde .example.dev.

NB: Du bør først teste med 302 (midlertidige) viderekoblinger - for å unngå problemer med hurtigbufring, og bare endre til 301 (permanent) når du er sikker på at den fungerer OK. Du må tømme nettleserens cache før du tester, siden feilaktig viderekoblinger til www på dev-domenet er sannsynligvis cachelagret av nettleseren.

  • Jeg har aldri viderekoblet domener med store bokstaver før. Jeg tror ikke du burde. Domener er ikke store og små bokstaver. Omdirigering er å være sensitiv i saken. Nettleserne mine har små domener før de sendes til serveren. Googlebot reduserer domener før henting.
  • @StephenOstermiller Riktignok er et ikke-små domenenavn i forespørselen i høyeste grad et kantstilfelle - muligens en uklar "bot" eller lurvende forespørsel (som kanskje ikke engang følger omdirigeringer uansett). "Domener er ikke store og små bokstaver." - men med mod_rewrite sammenligner vi det med store og små bokstaver, med mindre vi bruker NC flagg. Hvis vi ikke omdirigerer forespørselen, tillater vi potensielt "bot" tilgang til innholdet via en ikke-kanonisk URL, noe som kan være mindre ønskelig. Hvis "bot" ikke følger omdirigeringer, får den bare et minimalt svar, og vi minimerer sløsing med serverressurser.
  • @StephenOstermiller Et annet alternativ kan være å bare blokkere slike forespørsler (der Host header er ikke alle små bokstaver)? Bortsett fra: Litt av et problem med bruk av "generiske" direktiver (som brukt her) som ikke eksplisitt inkluderer vertsnavnet i bytte streng er at vi ikke kanoniserer vertsnavnet til alle små bokstaver i viderekoblingen.
  • Selv om bruken av. I dette tilfellet NC på dev-domenet er å forhindre en omdirigering. (Men dev-domenet er sannsynligvis ikke offentlig tilgjengelig uansett, så det gjør sannsynligvis ingen forskjell i dette tilfellet.) AH, faktisk, det burde være en NC flagg på regelen som sjekker mot !^www\. - ellers er det potensiale for en misdannet omdirigering! f.eks. www.WWW.example.com. Igjen, ekstrem kant tilfelle, men hei ... ho hum, jeg oppdaterer svaret mitt!
  • @StephenOstermiller Takk for spørringen - fikk meg til å tenke mer på det, og hjalp meg med å oppdage den feilen!

fungert for deg: Charles Robertson | Ønsker du å kontakte oss?

nyttig informasjon