Home Blog pc-software jak odstranit /subdom/ z URL při hostování u Wedosu

jak odstranit /subdom/ z URL při hostování u Wedosu

Popis: Jak odstranit z URL adresy /subdom/ ? Problém vzniká špatnou interpretací aplikací umístěné na serveru,následně porsáknutí chybné URL. Zde se věnuji opravě pro PHP aplikaci na serveru Apache. Typicky hosting Wedos.
Klíčová slova: /subdom/, URL, wedos, .htaccess, apache, rewrite, PHP
Hits: 5723
Hodnocení uživatelů: / 1
NejhoršíNejlepší 
Blog - pc-software
Napsal uživatel Admin   
Pondělí, 23 Prosinec 2013 12:57

/subdom/ v URL

Neohlídal jsem si to a na Internet prosákla interní adresa fyzického umístění souborů na Internet.444-google-index
Hledal jsem řešení, jak pomocí .htaccess nahradit adresy typu http://tcladin.cz/subdom/www/odkazy/odkazy.php. Kde část /subdom/www/ je fyzické umístění, kterého se chci v URL zbavit. Končil jsem na hlášce redirect pernamently bez vypsání obsahu stránky.
Brzy jsem zjistil, že nejsem schopen adresu např. http://tcladin.cz/subdom/www/odkazy/odkazy.php změnit na http://tcladin.cz/odkazy/odkazy.php. Buď jsem jen neznalý nebo to nelze.

Neumím změnit URI s /subdom/www/ na adresu bez tohoto umístění (na serveru /subdom/www/), zároveň toto umístění podstrkávám ? 

Potom mi nezbývá než, pokud mám fyzicky na serveru obsah v /subdom/www/, změnit fyzické umístění na serveru na /subdomeny/ a URI z /subdom/www/ přepsat na URI bez /subdom/www/.

Změna fyzického umístění souborů na serveru a směrování v .htaccess

doporučené umístění souborů na serveru

Je správné dodržet tato doporučení. Wedos hosting počítá s tím, že bude použita struktura souborů na serveru tak, že:

  1. Hlavní doména umístěná v /www_root/ (např. tcladin.cz)
  2. Subdomény k hlavní doméně umístěná v /www_root/subdom/tretirad (př. pro tretirad.tcladin.cz)
  3. A aliasy k hlavní doméně umístit v /www_root/domain/asiasdruhyrad.cz (př. pro aliasdruhyrad.cz)444-apache-feather

K této struktuře a metodě vkládání nových subdomén a aliasů (viz bod 2 a 3 výše) je založen originální Wedos soubor .htaccess, kterým je definováno kde se má na serveru apache obsah pro konkrétní URI hledat. O to se starají řádky Rewriterule končící parametry [DPI], dříve [L]. A dále jaké adresy se mají jakými nahradit. To jsou řádky RewriteRule s parametrem [R=301].

obsah stadrardního .htaccess dle Wedos

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

přejmenování adresáře subdom a uprava .htaccess 

adresáře

změň jméno adresáře /www_root/www/subdom na /www_root/www/subdomeny
NUTNÉ - tím již nebude přísupný /subdom fyzicky

.htaccess

změnou v .htaccess  subdom na subdomeny NUTNÉ

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

 



přesměrování /subdom/ na bez subdom
NENÍ NUTNÉ, SEO Žádoucí - zrychlí přepsání no url bez /subdom ve vyhledávači

 

#vyporadani se se zaindexovanymi URI s /subdom/, bylo nutne na serveru zmenit umisteni z /subdom na /subdomeny
#URI zacina na /subdom/, pr. URL je http://oop.tcladin.cz/subdom/oop/index.php REQUEST_URI je /subdom/oop
#REQUEST_URI > The path component of the requested URI, such as "/index.html". This notably excludes the query string which is available as as its own variable named QUERY_STRING.
RewriteCond %{REQUEST_URI} ^(/subdom/)
#HTTP_HOST > HTTP headers
#http server ma jmeno napr opencart.tcladin.cz %1= %2=opencart %3=tcladin %4=cz
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$ 
#prepsani z URI s subdom/neco bez lomitka/ na URL, kde $jsou podminky u RewriteRule a % z RewriteCond
#$1=subdom/opencart/ $2=index.php
RewriteRule ^(subdom/[^/]*/)(.*)$ http://%2.%3.%4/$2 [R=301,L]

 



Pokud nebyla dodržena pravidla Wedos pro umístění souborů hlavní domény. Tj namísto v /www_root/ jsou soubory hlavní domény umístěny v /www_root/subdom/www/. soubor .htaccess vypadá trochu jinak, včetně přesměrování. To by mohlo být např.

 

#vyporadani se se zaindexovanymi URI s /subdom/www, bylo nutne na serveru zmenit umisteni z /subdom na /subdomeny
#URI zacina na /subdom/, pr. URL je http://tcladin.cz/subdom/www/odkazy/odkazy.php REQUEST_URI je  /subdom/www/odkazy/odkazy.php
#REQUEST_URI > The path component of the requested URI, such as "/index.html". This notably excludes the query string which is available as as its own variable named QUERY_STRING.
RewriteCond %{REQUEST_URI} ^(/subdom/)
#HTTP_HOST > HTTP headers
#http server ma jmeno napr tcladin.cz %1= %2=tcladin %3=cz
RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]*)\.([^\.]*)$ 
#prepsani z URI na URL, kde $jsou podminky u RewriteRule a % z RewriteCond
#$1=subdom/www/ $2=odkazy/odkazy.php
RewriteRule ^(subdom/[^/]*/)(.*)$ http://%2.%3/$2 [R=301,L]

 


robots.txt
NENÍ NUTNÉ - Zabránit indexaci /subdom/ lze zápisem do robots.txt.

 

Disallow: /subdom/
 

Zde v robots.txt se přímo zakazuje přístup robotům. Kdežto rewrite přesměrovává na správnou adresu, což bude pro web (SEO) lepší. Odstranit stránku z indexu vyhledávače jde i jinak, například vložením atributu do html kodu a ve webmaster tools danného vyhledávače.

odstranění zdroje /subdom/ v URL

oprava parametru funkce $_SERVER444-replace

celá příčina toho, že na Internetu prosákla adresa s /subdom/
je zřejmně způsobena chybnou interpretací URL aplikací využívající PHP.

V tom případě se radí zkusit najít (najít text ve vzdáleném obsahu pomocí FTP) veškeré funce

$_SERVER["PHP_SELF"]

 a nahradit je funkcí

$_SERVER['REQUEST_URI']

U mě byla konkrétně chyba jak ve vlastním CMS tak v Joomla 1.5.26. Vyhledal jsem a nahradil (Krusader, TotalCommander, ...)

oprava Joomla administrator URI

po vložení URI pro administraci Joomla 

/administrator/

ok, adresa zůstane nepřepsaná, ale adresa s  

/administrator

se přepíše na 

/subdom/www/administrator

K správnému nasměrování na URI se zpětným lomítkrm jsem kod na začátek .htaccess pod rewriteengine on444-JoomlaAdministrator404

#doplneni lomitka pro url /administrator, jinak se po zadani nasmeruje na napr. /subdom/www/joomla/administrator/
RewriteCond %{REQUEST_URI} administrator$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [R=301,L]

nyní se URI přepíše na tu se zpětným lomítkem

/administrator/
 

Bez flagu [L] v předchozím pravidle se zobrazuje stánka joomly s chybou 404, komponenta nenalezena, viz obr výše, není to ideální řešení, 

oprava Prestashop 1.6.0.9 administrator URI

  • /admin/themes/default/template/header.tpl
    najít $base_url a odstranit  --- nepoužito, dá se vypnout v BO je to modul template edti činěco takového
      {if isset($base_url_tc)}{$base_url_tc|escape:'html':'UTF-8'}{else}

    zůstane na 226 jen
      <a href="/{$base_url}" id="header_foaccess" target="_blank" title="{l s='View my shop'}">
  • /controllers/admin/AdminModulesPositionsController.php
        
     //oprava tc, zobrazovalo URL se /subdom/ a live edit pak byl na stránce 404     
            //$url = Tools::getCurrentUrlProtocolPrefix().Tools::getHttpHost().$dir.$lang.Dispatcher::getInstance()->createUrl('index', (int)$this->context->language->id, $live_edit_params);
            $url = $this->context->shop->getBaseURL().$lang.Dispatcher::getInstance()->createUrl('index', (int)$this->context->language->id, $live_edit_params);        
            return $url;
  • /admin/functions.php
    zmněnit -- nepoužito, nemá vliv
    $adminObj->path = dirname($_SERVER["PHP_SELF"]);

    na
    $adminObj->path = dirname($_SERVER['REQUEST_URI']);

na závěr

Indexace jiných URL než těch, které admin chce je chyba.
Vliv na SEO je negativní. Síla stránky se rozdrobí do více URI.

 odkazy

Aktualizováno Neděle, 08 Leden 2017 23:02

Komentáře  

 
0 # aby fungovalo s joomla /administratortcladin 2014-01-05 19:17
v htaccess ještě přidat na začátek
#Automaticke doplneni lomitek, viz http://interval.cz/clanky/mod-rewrite-pro-hezka-url-lomitka-adresare-promenne/
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+ $
RewriteRule ^(.+[^/])$ /$1/ [R=301]
Odpovědět | Odpovědět citací | Citovat
 
 
0 # neni uplne vhodne resenitcladin 2014-02-09 15:28
Cituji tcladin:
v htaccess ještě přidat na začátek
#Automaticke doplneni lomitek, viz http://interval.cz/clanky/mod-rewrite-pro-hezka-url-lomitka-adresare-promenne/
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]


Zjisteno, ze toto reseni neni uplne vhodne. Jelikoz pak nefunguje prihlasenii ve frontendu Joomla CMS.

Misto toho sem dal do .htaccess radek na redirect jen pro konkretni url /administrator/
v .htaccess to vypada to takhle

#doplneni lomitka pro url /administrator, jinak se po zadani nasmeruje na napr. /subd/www/joomla/administrator/
RewriteCond %{REQUEST_URI} administrator$
RewriteRule ^(.*)$ http://%{HTTP_H OST}/$1/ [R=301,L]
Odpovědět | Odpovědět citací | Citovat