/ / htaccess presmerovať koreň do podadresára, ale povoliť index.php v koreňovej funkcii - php, wordpress, apache, .htaccess, joomla

htaccess presmerovať koreň na podadresár, ale povoliť index.php v koreňovej funkcii - php, wordpress, apache, .htaccess, joomla

Toto je naša situácia: Pôvodný názov domény (napríklad www.example.com) bol vykonaný v programe WordPress a nainštalovaný v koreňovom adresári. Vytvorili sme novú webovú stránku, ktorá používa Joomlu a umiestnila ju do podadresára (napríklad adresu www.example.com/PORTAL).

V tomto podadresári (www.example.com/PORTALsite) som úspešne presmeroval koreň (www.example.com/) pomocou tohto kódu do htaccess:

RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

To funguje dobre, S VÝNIMKOU, že potrebujeme originálStránky WordPress (domovská stránka umiestnená na adrese www.example.com/index.php) stále fungujú. Potrebujeme to, pretože v rámci tejto stránky WordPress máme stovky stránok, ktoré sú indexované vo vyhľadávačoch a chceme, aby všetok starý obsah pokračoval v činnosti.

Tento kód funguje dobre pre všetky súbory apodadresári v koreňovom adresári, ktoré umožňujú aj naďalej fungovať náš starý obsah a správne presmeruje samotný koreň (www.example.com/) na nový podadresár webovej lokality Joomla (www.example.com/PORTALsite) ,

Avšak problém je nasledovný: Stále potrebujeme, aby starý indexový súbor stránky WordPress fungoval, ak je prístupný priamo (tj ak niekto zadá adresu www.example.com/index.php), ale NIE funguje. example.com/index.php sa tiež presmeruje na stránky www.example.com/PORTAL.Hoci všetky ostatné súbory v koreňovom priečinku stále fungujú podľa požiadaviek.

Dovoľte, aby som sa ubezpečil, že to vysvetľujem správne: Ak niekto vstúpi do našej domény (www.example.com), presmeruje, ako chceme, na novú webovú lokalitu Joomla (www.example.com/PORTAL). Ale ak prejdete na stránku www.example.com/index.php (stará domovská stránka stránky WordPress), presmeruje sa aj na nový podadresár webovej lokality Joomla (www.example.com/PORTALsite). Nechceme, aby sa to stalo. Chceme to tak, aby v prípade, že koreňový index.php je priamo prístupný, bude stále funkčný (aby sa zachoval celý starý obsah WordPress neporušený).

Chceme len požiadavky na názov domény,www.example.com, na presmerovanie na stránky www.example.com/PORTAL. Ale potrebujeme, aby všetky ostatné súbory a podadresáre, vrátane www.example.com/index.php, stále fungovali (takže ľudia stále môžu pristupovať k všetkým starým obsahom webových stránok WordPress, ako aj k mnohým statickým strán).

Všetky súbory a podadresáre v koreňovom adresári(www.example.com/) stále fungujú podľa nášho záujmu, ale iba stará stránka Domovskej stránky WordPress (umiestnená na adrese www.example.com/index.php) tiež presmeruje na novú lokalitu www.example.com/ PORTALsite (spolu so žiadosťami o samotný názov domény www.example.com) .Takže kód uvedený vyššie je veľmi blízko k práci, ako si prajeme.

Veľmi oceňujem skúsenosti tu na StackOverflow a veľmi oceňujem každú pomoc, ktorú môžeme získať. Vopred ďakujem!

UPDATE: Toto je kód v našom súbore HTACCESS: (skôr ako "true.com")

RewriteEngine on
RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Vo svetle odpovedí anubhava nižšie, jeho kód by mal fungovať, akonáhle dostanem WordPress, aby som prestala odstrániť "index.php" z adresy URL. Ďakujem vám anubhava! Tu je celý súbor.

odpovede:

2 pre odpoveď č. 1

Nahraďte toto pravidlo:

RewriteRule ^$ http://www.example.com/PORTALsite [R=301,L]

s tým:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}s/+[s?]
RewriteRule ^$ /PORTALsite [R=301,L]
  • Uistite sa, že toto je prvé pravidlo vo vašom wordpress .htaccess
  • Uistite sa, že testujete v inom prehliadači, aby ste sa vyhli problémom s ukladaním do vyrovnávacej pamäte
  • Zmeňte nastavenie WP na permalink, aby sa vaše BLOG / Domovské URL ako http://domain.com/index.php namiesto http://domain.com/