Autor | Zpráva | ||
---|---|---|---|
Pavel444 Profil |
#1 · Zasláno: 20. 10. 2018, 18:41:25
Dobrý den,
pročítal jsem si na diskusi nějaké témata ohledně nastavení pěkných url. Chápu, že se to tady dost opakuje, nicméně já mám složitější dotaz: V současné době mám toho (viz. skript). Zajišťuje mi to přesměrovani z www.domena.cz/ kontakt.php na www.domena.cz/ kontakt. Dělá mi to u všech stránek, ale já bych chtěl zařídit výjimku.
Potřebuji, aby to neprovádělo u stránky clanky.php -> tady na diskusi jsem totiž našel následující skript (2), který bych pod původní umístil. Pomocí PHP (skript 3) pak jen dohledám článek z databáze. Cílem tedy je: všechny stránky na webu přesměrovávat na verzi bez .php + zajistit, aby při zadání www.domena.cz/clanky/1-prvni-clanecek se prováděl skript clanky.php?url=1-prvni-clanecek.
Moc díky za všechny rady, fakt! RewriteEngine on RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L] Skript 2 RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/?$ ?prom1=$1 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/([^/]+)?/?$ ?prom1=$1&prom2=$2 if($prom1=='clanky') { $dotaz = "SELECT * FROM clanky WHERE `nazev_url`='".$prom2."'"; } |
||
Kajman Profil |
#2 · Zasláno: 20. 10. 2018, 19:14:39
Mezi 4. a 5. řádek přidáte
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/([^/]+)?/?$ $1.php?url=$2 [L,QSA] |
||
Pavel444 Profil |
#3 · Zasláno: 21. 10. 2018, 13:29:29
Kajman:
Pokud dám do .htaccess toto, stejně to nejde. RewriteEngine on RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/([^/]+)?/?$ $1.php?url=$2 [L,QSA] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L] RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/?$ ?prom1=$1 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/([^/]+)?/?$ ?prom1=$1&prom2=$2 |
||
Kajman Profil |
#4 · Zasláno: 21. 10. 2018, 14:37:52
To jste dosud měl tuto splácaninu obou kódů z [#1] nebo jen ten první?
|
||
Pavel444 Profil |
Kajman:
Doposud jsem měl na serveru jen: RewriteEngine on RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC] RewriteRule ^ /%1 [NC,L,R] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^ %{REQUEST_URI}.php [NC,L] Lze to napsat lépe? Já totiž moc nevím... |
||
Kajman Profil |
#6 · Zasláno: 21. 10. 2018, 18:22:57
|
||
Pavel444 Profil |
Kajman:
Vše funguje. Pořád jsem tam cpal to $_GET["prom1"]. Mockrát vám děkuji, pěkný večer. Kajman: Jen ještě dotaz: lze nějak ošetřit, aby pokud někdo zadá www.domena.cz/ hahaha/1-prvni-clanecek se zobrazil Internal server error nebo jiné serverové hlášení? Nebo musím nějak ošetřit přes php?
|
||
Kajman Profil |
#8 · Zasláno: 21. 10. 2018, 22:51:06
Pokud neexistuje hahaha.php, měla by se zobrazit 404 stránka.
Pokud to přepisování s dvěma parametry nechcete univerzálně, ale jen pro vyjmenované skripty, lze to pravidlo upravit na. RewriteRule ^(clanky)/([^/]+)?/?$ $1.php?url=$2 [L,QSA] RewriteRule ^(clanky|fotky|novinky)/([^/]+)?/?$ $1.php?url=$2 [L,QSA] I v tomto případě by se pak při neplatné adrese měl vrátit obsah 404 stránky, kterou si můžete upravit a pokud ji budete generovat php, můžete ještě změnit chybový kód z 404 na něco jiného. |
||
Časová prodleva: 5 let
|
0