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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: