www.example.com/domains/example.com – jak odstranit?

55 zhlédnutíWebSite
0

Dobrý den, mám webové stránky, které fungujou jen přes soubory, nikoliv přes databázi. Web je rozdělen na několik sekcí, které se liší v barevnosti a na pozadí je v každé jiný obrázek. Soubory, které jsou společné pro celý web (šablona a inforormace pro všechny sekce), mají ve svém názvu global a jsou umístěny ve výchozím adresáři domains/example.com (používám pro přístup k nim relativní cestu). Pro větší uživatelský přehled se každá ze stránek v základu skládá ze dvou souborů – index.php a obsah.txt, který obsahuje výhradně textový obsah pro stránku prakticky bez použití kódu (obsahuje jen základní html kódy jako je a, h1, p,…). index.php jako takový jen sbírá data z různých souborů a dává je dohromady, abych mohl ovlivnit některé informace na všech stránkách.

obsah index.php:

<head><?php include ("../global-data.php"); ?>
<?php include ("./microsite-data.php"); ?></head>
<?php include ("../menu.txt"); ?><br>
<div id="text"><?php include ("../global-hlaseni.php"); ?><?php include ("./obsah.txt"); ?><?php include ("../global-paticka.php"); ?></div>

Ale teď k samotnému problému. Pokud mám adresář pojmenovaný číslem (například /4) a stránku zadám jako http://www.example.com/4, automaticky mě prohlížeč přesměruje na adresu http://www.example.com/domains/example.com/4. Pokud mám adresář, jehož název obsahuje jen písmena (např. /informace), zobrazí se mi i výsledná adresa krátce – https://www.example.com/informace.

Mám dva .htaccess soubory, jeden je v adresáři www/.htaccess, ten je výchozí od Wedosu a druhý mám v adresáři www/domains/example.com/.htaccess.

První .htaccess:

# 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]

Druhý .htaccess:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,QSA,L]
ErrorDocument 404 /404.php

Věděl by někdo, jak dát pryč /domains/example.com a zobrazit pouze jen číslo?

Role: Zákazník
Odpověděl na otázku
0

Dobrý den,

ve Znalostní batabázi to určitě bude:
https://kb.wedos.com/cs/kategorie/webhosting/htaccess/

Přesněji to co potřebujete:
https://kb.wedos.com/cs/webhosting/webhosting-samostatne-weby-pro-aliasy/

Webhosting – samostatné weby pro aliasy

Abyste pro nějakou doménu, která je u webhostingu nastavena jako alias, vytvořili samostatný web, stačí přes FTP vytvořit podadresář v adresáři www/domains.

Příklad: Máme webhosting a u něj je jako alias nastavena doména example.com a my pro ni potřebujeme jiný obsah. V takovém případě vytvořte adresář www/domains/example.com a do takto vzniklého adresáře nahrajte soubory, které se mají zobrazovat na adrese http://www.example.com/ (bude to fungovat též pro http://example.com/).

Pokud používáte aliasy s různým obsahem, důrazně doporučujeme také obsah hlavní domény přesunout do adresáře domains. Například máme webhosting doména1.cz a přidali jsme k němu druhou doménu doména2.com. Doporučené umístění stránek je následující:

  • www – zde ponechte pouze náš .htaccess soubor
  • www/domains/doména1.cz – zde nahrajte obsah hlavní domény
  • www/domains/doména2.com – zde nahrajte obsah druhé domény

Taktéž se ujistěte, že u domény v DNS máte odpovídající A záznam směřující na příslušný webhostingový server (to by se mělo samo správně nastavit při nastavování aliasu).

Dále si přečtěte:

Různé subdomény pro různé aliasy
V adresáři domains můžeme vytvářet i adresáře s názvem subdomén aliasů. Např. vytvoříme-li adresář www/domains/jirka.example.com, bude do něj nasměrována URL http://jirka.example.com/

Čím se to liší od vytvoření adresáře www/subdom/jirka? Řešení se subdom se aplikuje na všechny aliasy (všechny domény, které jsou aliasem, budou mít společnou subdoménu jirka se stejným obsahem). Ale řešením s adresářem domains tuto subdoménu vytvoříme jen pro example.com.

  • subdomény pomocí subdom – jednodušší řešení pro webhostingy, které nepoužívají aliasy
  • subdomény pomocí domains – lepší řešení při používání aliasů

Soubor htaccess
Samostatné weby pro aliasy jsou dělány pomocí pravidel, která jsou v souboru .htaccess ve vašem webu.

Následující soubor .htaccess vytvářet ani řešit nemusíte, ten je již ve vašem webhostingu připraven. Pro jeho použití stačí jen vytvořit potřebný adresář dle návodu výše.

Pravidla pro samostatné weby aliasů v souboru .htaccess jsou následující:

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]

Tento kód řeší současně i vytvoření subdomén.

Role: Zákazník
publikoval nový komentář

Dobrý den, děkuji za rozsáhlou odpověď, ale bohužel mi moc nepomohla. Obsah všech webů mám nahraný v adresáři domains v adresářích s názvem požadované URL. Jde mi opravdu jen o to zkrátit URL tak, aby se mi nezobrazovala adresa example.com/domains/example.com/1, ale aby se mi ukázalo jen example.com/1. Dlouhý tvar se mi zobrazuje jen u adresářů, které mají v názvu pouze číslici, když týž adresář přejmenuji na nějaký text, zobrazí se mi krátká verze URL (tj. example.com/textovynazev).

Dobrý den,
takže pokud to chápu správně tak ve složce „domains“ máte složku s doménou a vní další složku s „1,2“ atd??

Dobrý den, ano, přesně tak. V adresáři domains mám několik adresářů s názvy domén nebo subdomén (example.com, sub1.example.com, sub2.example2.com,atd..). Po stránce funkčnosti je všechno v pořádku a na požadované adrese se mi načte požadovaný web. V adresáři example.com mám několik částí, které jsou barevně odlišeny. Každá část je v jiném adresáři (1, 2, 3, 4, informace, public). U adresářů s číslem se mi zobrazuje dlouhá URL (example.com/domains/example.com/1), zatímco u adresářů s textem se mi ukáže krátká URL (example.com/informace). Když adresář informace přejmenuji na 5, zobrazí se mi dlouhá URL. A když přejmenuji adresář 4 na test, zobrazí se mi krátká URL.

Dobrý den,
tak to se omlouvám. Tento problém jsme neměli, jelikož Webhosting máme na vlastním serveru. Tudíž vše řešíme přes apache.

Categories