Autor Zpráva
ondra15
Profil
Ahoj, nechal jsem si poradit, jak udělat pěkné url ze stávajících např. domena.cz/index.php?page=autor na domena.cz/autor/.
Problém je v tom, že původně jsem měl web dělaný tak, že při zadání domena.cz naskočil automaticky index.html, kde byl rozcestník a uživatel se pohyboval dále.
Nyní mám .htaccess toto:
RewriteEngine On
RewriteBase /

#stránky
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^clanek/([^/]+)/?$ index.php?clanek=$1
RewriteRule ^sekce/([^/]+)/?$ index.php?sekce=$1
RewriteRule ^([^/]+)/?$ index.php?page=$1       [L,QSA]


Při zadání domena.cz mi vyskočí moje 404 stránka. Je možné nějak dokázat to, aby po zadání domena.cz byl uživatel ihned přesunut pomocí .htaccess na domena.cz/index.html?

Problémový web: zde
Davex
Profil
První dvě podmínky RewriteCond se vztahují pouze k prvnímu pravidlu RewriteRule, takže posledním pravidlem přepisuješ všechny cesty, ve kterých není lomítko - tedy i existující soubor index.html v kořenovém adresáři.

Na začátek přidej podmínku pro zastavení přepisu existujících souborů.

RewriteEngine On
RewriteBase /

# nepřepisovat cestu existujících souborů nebo adresářů
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^clanek/([^/]+)/?$ index.php?clanek=$1 [L,QSA]
RewriteRule ^sekce/([^/]+)/?$ index.php?sekce=$1 [L,QSA]
RewriteRule ^([^/]+)/?$ index.php?page=$1       [L,QSA]
ondra15
Profil
Skoro perfektní, toto pomohlo. Ale je tu jeden maly problém. Některé odkazy fungují, a některé né. Např. stránka /autor/ funguje (na serveru ve složce pages), stránka /hokej/ (též ve složce pages) nefunguje - hodí chybu 403. Tuto samou chybu hodí i odkaz /clanky/, který jsou v ve složce clanky.

Jinak v index.html i index.php je kód:
     <li><a href="/autor/" title="Pár slov o autorovi. Kdo to vlastně vůbec je?">Autor</a></li> 
     <li><a href="/clanky/" title="Články ze života, který prožívám">Články</a></li> 
     <li><a href="/fotogalerie/" title="Několik vybraných fotografii mapující můj život">Fotografie</a></li>
     <li><a href="/hokej/" title="Můj koníček: hokej">Hokej</a></li>
     <li><a href="/volnycas/" title="Jak žiju ve volném čase. Co mě zajímá">Volný čas</a></li>
     <li><a href="/kontakt/" title="Kdyby mě někdo někdy potřeboval.">Kontakt</a></li>
     <li><a href="/uvod/" title="Kliknutím se dostanete na <b>úvodní stranu</b>">Úvod</a></li>


Mohu poprosit ještě o pomoc?
Davex
Profil
Pokud jsou v kořenovém adresáři podadresáře /clanky/, /hokej/ a /sekce/, tak to funguje správně. Chyba se zobrazí, protože je zakázán výpis adresářů.
ondra15
Profil
Davex:
Pokud jsou v kořenovém adresáři podadresáře /clanky/, /hokej/ a /sekce/, tak to funguje správně. Chyba se zobrazí, protože je zakázán výpis adresářů.
Jo, to máte pravdu. Tyto složky tam jsou.
Ale ve složce /hokej/ neni soubor hokej.php. Tento soubor je ve složce /pages/. Je možné dokázat, aby soubor hokej.php načítal jako /hokej/?
Davex
Profil
Asi by se měla sjednotit adresářová struktura, aby nemuselo být víc pravidel.
ondra15
Profil
Když mám tyto pravidla v .httacess
RewriteEngine On
RewriteBase /

# nepřepisovat cestu existujících souborů nebo adresářů
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^clanek/([^/]+)/?$ index.php?clanek=$1 [L,QSA]
RewriteRule ^sekce/([^/]+)/?$ index.php?sekce=$1 [L,QSA]
RewriteRule ^([^/]+)/?$ index.php?page=$1       [L,QSA]

Mám složku /clanky/ a v něm soubor pojmenovaný napr. bezvadny-brnensky-ples.php, (původně se zobrazovalo jako domena.cz/index.php?clanek=bezvadny-brnensky-ples), co musím dopsat (upravit) do pravidel, aby se mi tento soubor načetl?

Myslel jsem si, že
RewriteRule ^clanek/([^/]+)/?$ index.php?clanek=$1 [L,QSA]
stačí.. Díky za pomoc
Davex
Profil
Asi by bylo nejlepší, opravit v odkaze cestu z /clanky/bezvadny-brnensky-ples/ na /clanek/bezvadny-brnensky-ples.
ondra15
Profil
Vyborný. A nyní poslední problém, který mě trápí. Šlo by udělat takové přesměrovnání, aby když zadám www.chef06.xf.cz, (tak nyní mi vyskočí moje stránka 404( aby to bylo přesměrované např. na www.chef06.xf.cz/uvod/?
Davex
Profil
Aby v tom nebyl nepořádek, tak by měl vhodný obsah zobrazit ten PHP skript.
ondra15
Profil
Davex:
Bezva. Díky za rady a pomoc.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0