Sådan hostes WordPress på AWS 2020 med gratis SSL, DNS (rute 53) og FTP-opsætning

Så på min side findes min indkøbskurv på example.com/zc2

Jeg bruger denne .htaccess-fil

RewriteEngine On Redirect /index.html example.com/zc2/ 

Så alle, der lander på example.com vil blive omdirigeret til min indkøbskurv.

Alt godt, men nu hvis jeg prøver at installere WordPress på example.com/wp så sidder browsere fast i en omdirigeringssløjfe.

Jeg er sikker på, at det er min dårligt udformede .htaccess-fil.

Hvad kan jeg gøre for at løse dette?

  • Send venligst din /wp/.htaccess fil.
RewriteEngine On Redirect /index.html example.com/zc2/ 

Bortset fra: Jeg antager, at dette skal være en "skrivefejl" i dit spørgsmål, men dette mod_alias Redirect direktivet er fuldstændig ugyldigt (du mangler en protokol fra mål-URL'en) - dette ville bryde din server med en 500 intern serverfejl - "Omdiriger til ikke-URL" !?

Også, RewriteEngine (mod_rewrite) og Redirect (mod_alias) er ikke-relaterede direktiver fra forskellige Apache-moduler.

Hvad kan jeg gøre for at løse dette?

Jeg formoder dog, at "omdirigeringssløjfen" kan være forårsaget af en miss-konfigureret WordPress .htaccess fil i /wp underkatalog. Hvis du ved et uheld omskriver tilbage til dokumentets rod, i stedet for /wp underkatalog, så får du en omdirigeringssløjfe.

Det Redirect direktivet er også "præfiks-matching" - det matcher enhver URL, der starter med kildens URL. Hvis du har til hensigt at omdirigere en bestemt sti (dvs. dokumentets rod), ville det være at foretrække at bruge en RedirectMatch direktiv (eller mod_rewrite RewriteRule - se senere) i stedet. For eksempel:

RedirectMatch 302 ^/(index\.html)?$ https://example.com/zc2/ 

Dette stemmer nu kun overens / (eller /index.html) og omdirigerer til example.com/zc2/.

Brug af mod_rewrite (RewriteRule) i stedet for

Mod_alias-direktivet (Redirect eller RedirectMatch) i dokumentets rod .htaccess filen behandles stadig (nedarvet), når der er andre .htaccess filer i underkataloger (dvs. WordPress /wp/.htaccess fil).

For at undgå omdirigere i roden .htaccess fil fra at forstyrre din WordPress-installation, og skift derefter mod_alias Redirect (eller RedirectMatch) i dit dokumentrod .htaccess fil til en mod_rewrite RewriteRule i stedet.

For eksempel:

RewriteEngine On RewriteRule ^(index\.html)?$ https://example.com/zc2/ [R=302,L] 

Mod_rewrite-direktiverne i WordPress .htaccess arkiv ved /wp/.htaccess vil fuldstændig tilsidesætte mod_rewrite-direktiverne i den overordnede .htaccess fil (i dokumentets rod) - og dermed undgå enhver konfliktmulighed. Mod_rewrite-direktiverne i roden .htaccess filen behandles ikke engang.

(Bemærk, at dette afhænger af Apache's standardadfærd, hvor mod_rewrite-direktiver ikke er arvet.)

Mens når et mod_alias Redirect bruges, mod_alias-direktivet i forældrene .htaccess filen vil stadig blive behandlet (om det matcher eller ikke er en anden sag) - mulig konflikt.

Hvis example.com/ er adgang til derefter omdirigering til example.com/zc2/ stadig forekommer.

Bemærk, at jeg har brugt 302 (midlertidige) omdirigeringer ovenfor. Skift disse til 301 (permanent) - hvis det er meningen - kun når du har bekræftet, at det fungerer OK. Dette er for at undgå eventuelle problemer med caching.

Der skal ikke være behov for at bruge en omdirigeringsregel eller -betingelse, da du simpelthen omdirigerer basen til en undermappe, og disse undermapper, hvis de også er sammenkædede, ikke behøver omdirigere.

Prøv noget som dette i /.htaccess fil:

Redirect 301 / https://example.com/zc2/ 

Så dette i din /WordPress/.htaccess fil:

# BEGIN WordPress  RewriteEngine On RewriteBase /WordPress/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]  # END WordPress 
  • 2 Denne omdirigering vil også omdirigere alle understier. Jeg tror ikke, det vil fungere.
  • Ja din ret, det er muligt at omskrive basen og derefter omskrive basen igen ved hjælp af htaccess i WordPress-mappen, da det skulle overskrive tidligere regler.

arbejdet for dig: Charles Robertson | Ønsker du at kontakte os?