Jak opravit URL WordPress u Wedos

  Chyby a problémy

Pár lidí psalo, že má problém s URL WordPress u Wedos. Po manuální instalaci se jim objevuje adresa ve tvaru domena.tld/domains/domena.tld/. Snažili se zasahovat do .htaccess ale situace se jen zhoršila. V dnešním návodu se podíváme jak celý problém vyřešit a také proč se vlastně přihodil.

Adresářová struktura u Wedos

Adresářová struktura na webhostingu Wedos NoLimit a LowCost

Wedos nabízí v podstatě jen jednu variantu webhostingu s názvem NoLimit. K té je možné si přikoupit různé příplatkové služby, včetně navýšení výkonu. Obecně s WordPress u Wedos nejsou žádné problémy. Zvládne utáhnout poměrně slušnou návštěvnost i na větším webu. Problém je jen složitější administrativa a adresářová struktura, na kterou je nutné si zvyknout.

Většina lidí instaluje WordPress do adresáře www. Pokud však plánujete provozovat na webhostingu více domén, tedy využít aliasy anebo subdomény, tak se vyplatí umístit web rovnou do adresáře domains. Tam vám WordPress umístí také automatický instalátor, který má Wedos k dispozici. Ten vše zvládne automaticky, ovšem je nutné ihned po instalaci WordPress aktualizovat na nejnovější verzi.

Takže většina lidí prostě nahraje instalaci rovnou do adresáře domains. Tedy do:

www/domains/domena.tld

Výsledkem po instalaci však je, že je wordpress na adrese:

domena.tld/domains/domena.tld/

Náprava je jednoduchá

Rozhodně se nevrhejte do žádných úprav .htaccess. Jeden od Wedos se nachází v adresáší www/ a druhý vytvořený WordPress pak ve www/domains/domena.tld. Vše totiž funguje jak má a není třeba v těchto souborech nic měnit.

Místo toho zamiřte do Nastavení – Obecné v administraci WordPress. Zde upravte hodnoty:

  • Instalace WordPressu (URL)
  • Úvodní stránka webu (URL)

na http://domena.tld. Tedy URL kde se bude nacházet váš web. Musíte nastavit obě naráz než kliknete na Uložit změny. Následně se objeví chybová zpráva:

Warning: is_writable(): open_basedir restriction in effect. File(/) is not within the allowed path(s): (/data/web/virtuals/116XXX/virtual) in /data/web/virtuals/116XXX/virtual/www/domains/domena.tld/wp-admin/includes/misc.php on line 209

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/116XXX/virtual/www/domains/domena.tld/wp-admin/includes/misc.php:209) in /data/web/virtuals/116XXX/virtual/www/domains/domena.tld/wp-includes/pluggable.php on line 1174

První varování je, že je zapnutá direktiva open_basedir a druhá, že už byl odeslán řetězec a tak není možné modifikovat hlavičku. Vypadá to katastroficky, ale ještě před chybou se provedly všechny změny, které potřebujeme.

Vraťte se zpět na přihlášení do administrace na domena.tld/wp-admin/wp-login.php Mimochodem ten už najednou funguje jak správně má. Přihlaste se a vše už půjde. Všechno přesměrování je už funkční.

Co se stalo

Při instalaci byly zapsány do databáze, konkrétně do tabulky wp_option (popřípadě s jinou předponou), následující řádky:

  • siteurl s hodnotou http://domena.tld/domains/domena.tld
  • home s hodnotou http://domena.tld/domains/domena.tld

Následně do .htaccess v adresáři s instalací i patřičné přesměrování.

Oprava v Nastavení – Obecné, pak řádky s hodnotami přespala a upravila i .htaccess. Kvůli chybě však nedošlo k patřičnému přesměrování.

Správný htaccess

V původním .htaccess v adresáří www/domains/domena.tld s instalací bylo

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

# END WordPress

Správně však má být

# 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

.htaccess vytvořený Wedos v adresáři www/ musí zůstat stejný, tedy:

# htaccess rules for subdomains and aliases
# to create new subdomain, create a folder www/subdom/(subdomain name)
# to create web for alias, create a folder www/domains/(whole domain name)

# htaccess pravidla pro subdomeny a samostatne weby aliasu
# pro vytvoreni subdomeny vytvorte adresar www/subdom/(nazev subdomeny)
# pro vytvoreni webu pro alias vytvorte adresar www/domains/(cely domenovy nazev)
# dalsi info a priklady: http://kb.wedos.com/r/32/webhosting-htaccess.html

RewriteEngine On

# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]

# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]

# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]

# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]

Závěr

Wedos má pár věcí jinak a pokud si na to zvyknete, tak vám vše pojede bez problémů. V každém případě doporučuji hned na začátku:

  • Smazat z hlavního adresáře soubory index.html a info.php.
  • Zakázat přístup do adresáře www/ ideálně přes 403.
  • Ihned po koupi nového NoLimit si přepnout PHP na poslední verzi 7. Značně se tím zvýší rychlost WordPress.
  • Aktivovat si 5 GB úložiště zdarma (Wedos disk) a použít pluigin UpdraftPlus Backup and Restoration k zálohování dat.
  • Pokud budete vytvářet něco na subdoménách, tak místo adresáře subdom, použijte adresář domains, kam dáte celý název domény i se subdoménou (subdomena.domain.tld).

Napiš komentář