Autor | Zpráva | ||
---|---|---|---|
S3RIO2 Profil |
Ahoj,
udělal jsem si jednoduchý "šablonovací systém v php". Následně jsem si chtěl udělat přepis určitých adres skrze htaccess, ovšem stala se mi nemilá věc.., pokud zadám přepsanou URL adresu nevyhodí mi 404, přesměrování proběhne, ovšem žádný obsah se nevypíše. Pokud ale zadám starou adresu, tedy nepřepsanou skrze htaccess vše funguje bez problémů. A třešničkou na dortu je, že jedna přepsaná URL mi funguje ... :-D Přikládám htaccess a jak vypadá kód indexu.. .htaccess RewriteEngine On RewriteBase / # Přesměruj všechno na verzi s www RewriteCond %{HTTP_HOST} ^url.cz [NC] RewriteRule (.*) http://www.url.cz/$1 [R=301,QSA,L] # Tyto přepisy nefungují, ovšem při zadání staré URL vše vypíše RewriteRule upload-pictures/$ index.php?str=uploader [NC] RewriteRule upload-pictures/true/$ index.php?str=upload&status=true [NC] RewriteRule upload-pictures/false/$ index.php?str=upload&status=false [NC] RewriteRule testovaci/$ index.php?str=test [NC] # Tento přepis funguje a vypíše co má RewriteRule p/(.*)$ index.php?str=image&hash=$1 [NC] # Blokování ip adres deny from all allow from 86.49.154.30 allow from 185.137.19.70 index.php <?php if (isset($_GET['str'])) $str = $_GET['str']; else $str = 'index'; if (preg_match('/^[a-z0-9]+$/', $str)){ $write = include('content/' . $str . '.php'); if (!$write) echo('404'); } else echo('Chyba'); ?> Následně v adresáři ./content/ mám soubory ať už jen s PHP nebo jen s HTML problém nastává vždy. Krom té jedné URL, kde akorát předám "hash" a sql dotazem vypíši data z DB. Testováno na hostingu wedos (php5.6), php errory žádné .. Tak kde může být problém? Předem děkuji za každou radu. //EDIT: Ještě bych podotkl, že nefungující adresy fungovali .. až když jsem přidal: RewriteRule p/(.*)$ index.php?str=image&hash=$1 [NC] .. jsem si všiml, že je s přepisem adres ámen (po smazání stále stejný problém, tak nevím ..). :-X |
||
Lonanek Profil |
#2 · Zasláno: 21. 12. 2016, 19:36:38
Pokud nemáte na Wedosu soubory umístěny přímo v kořenovém adresáři, ale v adresáři domains (resp. subdom) zkuste zadat celou cestu ke skriptu ve tvaru:
^/domains/nazevdomeny.tld/ konkrétně # Tyto přepisy nefungují, ovšem při zadání staré URL vše vypíše RewriteRule upload-pictures/$ ^/domains/nazevdomeny.tld/index.php?str=uploader [NC] RewriteRule upload-pictures/true/$ ^/domains/nazevdomeny.tld/index.php?str=upload&status=true [NC] RewriteRule upload-pictures/false/$ ^/domains/nazevdomeny.tld/index.php?str=upload&status=false [NC] RewriteRule testovaci/$ ^/domains/nazevdomeny.tld/index.php?str=test [NC] |
||
S3RIO2 Profil |
Bohužel, ani takto se z /upload-pictures/ nebo /testovaci/ obsah nevypíše, ale při zadání /index.php?str=uploader (php script) či /index.php?str=test (čisté html) ano.
Je to zvláštní, hlavně když ten jeden přepis funguje bez problémů. |
||
Davex Profil |
#4 · Zasláno: 21. 12. 2016, 20:26:58
S3RIO2:
Nemáš tam víc skriptů index.php v různých adresářích? Příklad: Zkoušíš to na /text/index.php a v kořeni webu máš /index.php. Jinak ten skript by bylo vhodné přeformátovat, aby se v tom vyznal i někdo jiný než prasátko. |
||
S3RIO2 Profil |
Ano v ./content jsem měl také index.php který zajištoval hlavní stranu, přejmenováno na homepage.php
index.php v kořenovém adresáři nyní vypadá tedy takto (promiň, to formátování jde mimo mě..) -> změna popsána: <?php if (isset($_GET['str'])) $str = $_GET['str']; else $str = 'homepage'; // upraveno z index na homepage if (preg_match('/^[a-z0-9]+$/', $str)){ $write = include('content/' . $str . '.php'); if (!$write) echo('404'); } else echo('Chyba'); ?> Ovšem můj problém to neřeší a stále obsah nelze přepisem adres vypsat. //EDIT: Pravděpodobně vyřešeno, schválně jsem smazal a obnovil ./content/image.php pro který jsem měl přepis RewriteRule p/(.*)$ index.php?str=image&hash=$1 [NC] + a přidal lomítko na konec nové url a již vše vypisuje. Děkuji za Váš čas chlapi. |
||
Časová prodleva: 8 let
|
0