Autor | Zpráva | ||
---|---|---|---|
ondra15 Profil |
#1 · Zasláno: 11. 4. 2011, 19:30:17
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 |
#2 · Zasláno: 11. 4. 2011, 22:42:52
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 |
#3 · Zasláno: 12. 4. 2011, 20:44:05
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 |
#4 · Zasláno: 12. 4. 2011, 21:22:03
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 |
#5 · Zasláno: 12. 4. 2011, 22:45:04
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 |
#6 · Zasláno: 12. 4. 2011, 23:41:47
Asi by se měla sjednotit adresářová struktura, aby nemuselo být víc pravidel.
|
||
ondra15 Profil |
#7 · Zasláno: 13. 4. 2011, 19:52:02
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] |
||
Davex Profil |
#8 · Zasláno: 13. 4. 2011, 22:27:00
Asi by bylo nejlepší, opravit v odkaze cestu z /clanky/bezvadny-brnensky-ples/ na /clanek/bezvadny-brnensky-ples.
|
||
ondra15 Profil |
#9 · Zasláno: 14. 4. 2011, 11:14:49
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 |
#10 · Zasláno: 14. 4. 2011, 19:54:27
Aby v tom nebyl nepořádek, tak by měl vhodný obsah zobrazit ten PHP skript.
|
||
ondra15 Profil |
#11 · Zasláno: 14. 4. 2011, 20:34:52
Davex:
Bezva. Díky za rady a pomoc. |
||
Časová prodleva: 13 let
|
0