Autor | Zpráva | ||
---|---|---|---|
jindrakuba Profil |
#1 · Zasláno: 29. 2. 2012, 19:04:08
Ahojte. Mám problém, který se projevuje jen na novém hostingu u Wedosu. Nefunguje mi PHP include. Web mi běží ve složce www/domains/htc-one.cz (jedná se o hosting pro více domén) ... Na IC.CZ mi vše funguje tak jak má, na novém hostingu se zobrazí jen index stránka , ale php asi nefunguje... Tady je index :
<?php ini_set('display_errors',1); error_reporting(E_ALL | E_STRICT); global $tpl; $tpl['include_path'] = dirname(__FILE__).'/'; if (!empty($_GET['path'])) { $tpl['path'] = explode('/', trim($_GET['path'], '/')); $tpl['get_path'] = htmlspecialchars($_GET['path']); } else { $tpl['path'] = array(); $tpl['get_path'] = ''; } if (empty($tpl['path'])) { $tpl['template'] = 'index'; } else { if (count($tpl['path']) == 1) { $tpl['template'] = $tpl['path'][0]; } else { $tpl['template'] = implode('_', $tpl['path']); } } $tpl['template_file'] = $tpl['include_path'].'templates/'.$tpl['template'].'.phtml'; if (file_exists($tpl['template_file'])) { $file = file_get_contents($tpl['template_file']); $pos = mb_strpos($file, '<p', 0, 'utf-8'); if ($pos !== false) { $offset_begin = mb_strpos($file, '>', $pos, 'utf-8'); $offset_end = mb_strpos($file, '</p>', 0, 'utf-8'); $tpl['description'] = mb_substr($file, $offset_begin+1, $offset_end-$offset_begin, 'utf-8'); $tpl['description'] = preg_replace('~[[:space:]]+~', ' ', strip_tags($tpl['description'])); } else { $tpl['description'] = null; } include_once $tpl['template_file']; } else { header('HTTP/1.1 404 Not Found'); include_once $tpl['include_path'].'templates/404.phtml'; } ?> Tady htaccess : # 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] <FilesMatch "\.phtml$"> Order Deny,Allow Deny From All </FilesMatch> ErrorDocument 404 /404/ RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] Neví někdo co s tím ? :( je divné, že na ic.cz to běhá .. není to něco v htaccess ? |
||
Davex Profil |
#2 · Zasláno: 29. 2. 2012, 20:16:53
Poslední přepisovací pravidlo (všechno za
ErrorDocument 404 /404/ ) bych dal do samostatného souboru .htaccess v adresáři www/domains/htc-one.cz.
|
||
jindrakuba Profil |
#3 · Zasláno: 29. 2. 2012, 21:30:51
Davex:
Děkuji za snahu, ale nic se nezměnilo .... Zajímavé je, že ať dám do adresy za www.htc-one.cz/cokoli , vždy web zobrazuje pouze úvodní index .... |
||
Alphard Profil |
#4 · Zasláno: 29. 2. 2012, 21:39:40
jindrakuba:
Ten kód je zbytečně dlouhý. Kontrolním výpisy proměnných snad můžete lépe zaměřit problém. Minimálně zjistit, jestli to souvisí s .htaccess nebo ne. |
||
jindrakuba Profil |
#5 · Zasláno: 29. 2. 2012, 21:45:44 · Upravil/a: jindrakuba
Alphard:
Právě že se v PHP nevyznám ... Proto hledám radu tady v PHP :) Jinak toto řešení includování jsem našel zde : http://mike.treba.cz/dynamicke-skladani-stranek-pomoci-include-dil-ii/ jindrakuba: Nefunguje jen to adresarove razeni .... takto to funguje : http://www.htc-one.cz/index.php?path=htc-one-x jenze adresa ma vypadat takto : http://www.htc-one.cz/htc-one-x/ .... nevíte někdo ? |
||
jindrakuba Profil |
#6 · Zasláno: 2. 3. 2012, 11:13:58
Ahojte. Tak už jsem malinko rozluštil problém. Chyba bude v php scriptu, který vypisuje proměnou "template" ... Tady jsem trošku upravil stránku 404, kde je vše vidět
http://www.htc-one.cz/htc-one-x/
Za template se dosazuje "domains_htc-one.cz_htc-one-x" což je ale špatně, potřebuji aby se dosadilo jen "htc-one-x" Zde přikládám část PHP, která se stará o proměnné.. global $tpl; $tpl['include_path'] = dirname(__FILE__).'/'; if (!empty($_GET['path'])) { $tpl['path'] = explode('/', trim($_GET['path'], '/')); $tpl['get_path'] = htmlspecialchars($_GET['path']); } else { $tpl['path'] = array(); $tpl['get_path'] = ''; } if (empty($tpl['path'])) { $tpl['template'] = 'index'; } else { if (count($tpl['path']) == 1) { $tpl['template'] = $tpl['path'][0]; } else { $tpl['template'] = implode('_', $tpl['path']); } } $tpl['template_file'] = $tpl['include_path'].'templates/'.$tpl['template'].'.phtml'; Pokud to může být kvůli htaccess (jedná se o htaccess přímo ve složce www/domains/htc-one-x - tedy v kořenovém adresáři kde má běžet web jako alias), tak tady přikládám také výpis : RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] |
||
Davex Profil |
#7 · Zasláno: 2. 3. 2012, 18:36:07
Skoro to vypadá, že jsi tato pravidla nechal i v souboru /www/.htaccess. Měla by být pouze v souboru .htaccess pro tu jednu doménu.
|
||
jindrakuba Profil |
#8 · Zasláno: 2. 3. 2012, 22:29:46
Davex:
Bohužel nenechal ... OK bude to nejspíše chyba v HTACCESS .. Takže tady je výpis z kořenového (../www/.htaccess) 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] # 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 A tady pro www/domains/htc-one.cz/.htaccess <FilesMatch "\.phtml$"> Order Deny,Allow Deny From All </FilesMatch> ErrorDocument 404 /404/ RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?path=$1 [L,QSA] |
||
Davex Profil |
#9 · Zasláno: 2. 3. 2012, 22:44:12
Pravidla pro Wordpress jsi v souboru /www/.htaccess předtím neměl, tak je dej také pryč. V tomto souboru by asi další pravidla být neměla.
|
||
jindrakuba Profil |
#10 · Zasláno: 2. 3. 2012, 23:00:02 · Upravil/a: jindrakuba
Davex:
Tyjo necekal jsem, ze bude stacit smazat pravidla pro wordpress .... Smazánim se odstranil můj problém .... Ale ve složce ../www/ provozuji web na wordpressu ... tim že jsem to smazal mi to přestalo ject .. ale zase mi jede web ve www/domains/htc-one.cz/ .... Takže další otázka .. jak to udělat ? Jak to skloubit ? :) Jinak stejně moc děkuji, je to pokrok :) jindrakuba: Tak jinak ... jak upravit, aby ten wordpress zápis plati jen pro složku ../www/ , ale neplatil pro ../www/domains/ ? Půjde to nějak ? ... Další možnost mě napadla že bych obsah složky www hodil do domains/adresa .... což by ale asi rozhodilo wp .. :D .. ach jooo |
||
Davex Profil |
#11 · Zasláno: 3. 3. 2012, 12:13:17
jindrakuba:
Nastavení v souboru www/.htaccess platí pro všechny a budou aplikována vždy (jinak by nefungovalo rozhazování domén do podadresáře domains/). Správné řešení je přesunout Wordpress do adresáře domains/adresa/ a pravidla pro něj mít v souboru .htaccess jen tam. Wordpress si často upravuje soubor .htaccess sám, takže to bude v samostatném adresáři spolehlivější. |
||
jindrakuba Profil |
#12 · Zasláno: 3. 3. 2012, 12:44:31
Davex:
OK děkuji moc :) No tak ok jde se na to .... jsem zvědavej, jak to bude fungovat a za jak dlouho wordpress zprovozním :D ... |
||
Časová prodleva: 12 let
|
0