Autor | Zpráva | ||
---|---|---|---|
cs.web Profil |
#1 · Zasláno: 23. 5. 2015, 13:33:01
Dobrý den,
měl bych jeden takový problém. Na svém webovém serveru bych chtěl používat přepis adres na hezké URL. (Zobrazovat tedy adresu bez koncovek souborů) Přepis na adresu s www funguje, ale na adresy bez koncovek souborů už ne. Mod_rewrite je na serveru povolen. RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.cz RewriteRule (.*) http://www.example.cz/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ /$1.php [L,QSA] Předem děkuji za případnou odpověď. |
||
Davex Profil |
#2 · Zasláno: 23. 5. 2015, 13:40:35
|
||
cs.web Profil |
Díky.
Tam už jsem byl a tato pravidla na serverch u webhostingu normálně fungují. Na tom vlastním serveru však ne. Předpokládám tedy, že problém bude asi v konfiguraci serveru. První pravidlo funguje a druhé už ne. Na serverch webhostingu fungují oba. V .htaccess je to přesně jako jsem uvedl zde. |
||
ForestCZE Profil |
.htaccess
RewriteEngine On RewriteBase / Options -Indexes RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !=/index.php RewriteRule ^(.*)$ /index.php?stranka=$1 [L,PT] mujweb.cz/neco/dalsiho index.php <?php $url = $_GET["stranka"]; $link = explode("/", $url); if($link[0] == "neco"){ ... } if($link[1] == "dalsiho"){ ... } ?> |
||
cs.web Profil |
#5 · Zasláno: 23. 5. 2015, 16:03:53
ForestCZE:
Díky. Nad tímhle řešením jsem taky uvažoval, ale nejraději bych to chtěl udělat přes .htaccess. |
||
Davex Profil |
#6 · Zasláno: 23. 5. 2015, 18:32:50
cs.web:
„První pravidlo funguje a druhé už ne.“ Jak se to nefungování projevuje? Zobrazuje se nějaká chyba? |
||
cs.web Profil |
#7 · Zasláno: 23. 5. 2015, 18:37:18
Projevuje se to tak, že se normálně zobrazí 404.
Když se opět zadá adresa i s .php, soubor normálně najede. Adresář se stejným názvem neexistuje. Přesná kopie stránek i se stejným .htaccess na serveru webhostingu funguje. Na vlastním serveru funguje vše až na podstrčení souboru na adresu bez .php. |
||
Davex Profil |
#8 · Zasláno: 23. 5. 2015, 18:47:46
U té chyby 404 by měl webserver vypsat adresu na kterou se snaží přistupovat - ta samostatně funguje? Nepřepisuješ náhodou do jiného adresáře než jsou PHP skripty?
|
||
cs.web Profil |
Adresa se zobrazuje normálně ve tvaru, který jsem napsal.
Zadávám: www.example.cz/stranka (Nefunguje - 404)
Snažím se dostat: www.example.cz/stranka.php (Funguje - 200)
Zjistil jsem však zajímavou věc. Ono to funguje na všechny soubory kromě php. (Př: JS, CSS, PNG, ZIP, RAR) Soubor www.example.cz/styly.css se tedy zobrazuje i na adrese www.example.cz/styly , což opravdu nechápu.
--- EDIT --- Tak právě jsem zjistil, že se to děje i bez souboru .htaccess a pravidla v něm. Všechny soubory kromě .php jsou přístupné přes adresu bez koncovky a to i po vypnutí mod_rewrite na serveru. Tak toto už naprosto nechápu. |
||
Davex Profil |
cs.web:
„Zadávám: w>ww.example.cz/stranka (Nefunguje - 404)“ Opravdu je ta stránka v kořeni webu? Není náhodou ještě v nějakém adresáři - např. w>ww.example.cz/adresar/stranka? Pokud není, tak si zapni RewriteLog a podívej se, co se jak přepisuje.
„Pokud přejmenuji soubor stranka.php na stranka.html, je přístupný přes adresu w>ww.example.cz/stranka.“ Příčina tohoto chování je popsána ve výše zmíněném FAQ a s přepisovacími pravidly mod_rewrite nesouvisí. |
||
cs.web Profil |
#11 · Zasláno: 23. 5. 2015, 23:43:25
Davex:
Momentálně mě ale nejvíce znepokojuje to, že i při vypnutém mod_rewrite na serveru jsou všechny soubory kromě .php přístupné bez koncovky. Stránka je v kořeni webu virtualhostu: /var/www/example.cz Hlavní stránka serveru je v: /var/www/ Hlavní stránka však má v htaccess nastavené jen chybové stránky. |
||
Kajman Profil |
cs.web:
A dočetl jste odkaz z [#2] až do konce, tedy i poznámku o mod_negotiation? |
||
cs.web Profil |
#13 · Zasláno: 25. 5. 2015, 15:21:01
Kajman:
Tak to se opravdu omlouvám. Skutečně jsem měl dojem, že jsem článek přečetl celý. |
||
Časová prodleva: 9 let
|
0