Autor | Zpráva | ||
---|---|---|---|
Hitman Profil |
#1 · Zasláno: 12. 7. 2015, 00:24:00
Dobrý den,
nikde se mi nepodařilo vyřešit problém: RewriteRule ^(.*) index.php?id=$1 Tohle mi funguje v pořádku, adresa je potom web.cz/neco Potřeboval bych ale přidat i koncové lomítko: web.cz/neco/. Zkoušel jsem: RewriteRule ^(.*)/$ index.php?id=$1 [QSA,L] Bohužel nefunguje... |
||
Davex Profil |
#2 · Zasláno: 12. 7. 2015, 01:10:09
Fungovat by to mělo, ale záleží na tom, co od toho přesně očekáváš. Když přidáš na konec adresy lomítko, tak se snad spustí skript i s původním pravidlem, nebo ne?
|
||
Kajman Profil |
#3 · Zasláno: 12. 7. 2015, 01:10:26
Jak to nefunguje? Máte tam jen toto pravidlo, nic jiného a /neco/ nezavolá index.php?id=neco ?
|
||
Keeehi Profil |
#4 · Zasláno: 12. 7. 2015, 09:15:01
Hitman:
Hledáš to na špatném místě. Musíš to hledat v aplikací na tom místě, kde se odkazy tvoří. Tohle jen zajišťuje, aby se ten už vytvořený odkaz dostal na správné místo. |
||
Hitman Profil |
#5 · Zasláno: 12. 7. 2015, 09:53:46
No pokud mám v htaccess první řešení, očekávám že:
web.cz/pepa se bude tvářit jakobych zadal web.cz/index.php?id=pepa . To funguje. Pokud ale použiji druhou variantu, očekávám že web.cz/pepa/ se bude tvářit jako bych zadal web.cz/index.php?id=pepa. To nefunguje. Potom v index.php přes get žjišťuji onu adresu a z db vybírám příslušná data. Dělám to špatně? Keeehi Tvé odpovědi moc nerozumím, odkazy bych chtěl mít ve tvaru web.cz/nejaka-podstranka/ namísto web.cz/nejaka-podstranka - bylo mi doporučeno, že adresy končící lomítkem jsou lepší, bez koncového lomítka jsou spíše soubory...ale předpokládám že je to asi jedno. Ale když už né kvůli tomuto, tak minimálně z principu by mě to zajímalo. |
||
Keeehi Profil |
#6 · Zasláno: 12. 7. 2015, 09:59:36
Hitman:
„Potom v index.php přes get žjišťuji onu adresu“ A když použiješ první variantu, do URL zadáš web.cz/nejaka-podstranka/ tak v $_GET['id'] nemáš /nejaka-podstranka/ ? |
||
Hitman Profil |
Bez toho prvního lomítka ano. Tak už jsem na to přišel, hádalo se mi to s druhým přesměrováním.
V htaccess mám totiž ještě: #RewriteRule ^(.*)/$ $1.php [QSA,L] RewriteRule ^([^.]+)/$ $1.php [QSA,L] Mám totiž některé stránky jako stranka.php a některé bych chtěl volat přes GET. Pokud tam dám všechny 3 řádky: #RewriteRule ^(.*)/$ $1.php [QSA,L] RewriteRule ^([^.]+)/$ $1.php [QSA,L] RewriteRule ^(.*)/ index.php?id=$1 Tak to vyhodí chybu. Je nějak možné to spojit, aby fungovalo oboje dohromady? Tedy: neco.php -> /neco/ index.php?id=pepa -> /pepa/ //Něco jako RewriteRule ^([^.]+)/$ $1.php [QSA,L] POKUD NEVRACÍ ŽÁDNÝ VÝSLEDEK (není žádná stránka .php) POUŽIJ -> RewriteRule ^(.*)/ index.php?id=$1 |
||
Taps Profil |
Hitman:
„Mám totiž některé stránky jako stranka.php a některé bych chtěl volat přes GET.“ Důležité je to nějakým způsobem rozlišovat v url adrese. RewriteRule ^podstranka/(.*)/ index.php?id=$1 RewriteRule ^([^.]+)/$ $1.php [QSA,L] <a href="podstranka/web">web</a> |
||
Keeehi Profil |
#9 · Zasláno: 12. 7. 2015, 10:53:31
Standardně se používá
RewriteCond %{REQUEST_FILENAME} !-f pro nepřepisované adresy
Ovšem v tvém případě by to mělo být něco jako RewriteCond %{REQUEST_URI}.php !-f |
||
Hitman Profil |
Taps
Právě mi jde o to, nerozlišovat je. Uživatel zadá adresu web.cz/neco/ . A potřeboval bych aby se v htaccess provedlo RewriteRule ^([^.]+)/$ $1.php [QSA,L], čili hledá neco.php. Pokud ji najde, vrátí obsah. Pokud ne, použije RewriteRule ^(.*)/ index.php?id=$1 a bude tak hledat zda existuje index.php?id=neco. Je to možné takto spojit? Keehi V htaccess tedy mám mít?: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteCond %{REQUEST_URI}.php !-f RewriteRule ^.* - [L] #RewriteRule ^(.*)/$ $1.php [QSA,L] RewriteRule ^([^.]+)/$ $1.php [QSA,L] RewriteRule ^(.*)/ index.php?id=$1 |
||
Davex Profil |
#11 · Zasláno: 12. 7. 2015, 10:56:15
|
||
Hitman Profil |
#12 · Zasláno: 12. 7. 2015, 11:12:16
Aha, netušil jsem že je to tak složité. S htaccess si příšliš nerozumím, takže to asi vyřším uložením souborů .php do db a budu vše tahat přes get.
Každopádně díky všem. |
||
Hitman Profil |
#13 · Zasláno: 12. 7. 2015, 13:28:16
A ještě mě tedy napadla jedna věc. Použiji:
RewriteRule ^(.*)/ index.php?id=$1 Pokud ale zadám web.cz/neco bez koncového lomítka vyhodí to chybu. Je možné to přesměrovat na adresu s lomítkem? |
||
Keeehi Profil |
Hitman:
Ano jde to přesměrovat. Snad to bude správně RewriteRule [^/]$ $0/ [L,R=302] |
||
Hitman Profil |
#15 · Zasláno: 13. 7. 2015, 18:06:17
Keeehi:
Tak pokud přidám tento řádek, píše mi to chybu serveru 500. Je to možné? |
||
Keeehi Profil |
#16 · Zasláno: 13. 7. 2015, 19:04:00
Hitman:
Možné to je, ovšem nevidím důvod proč. Jedině, že bys ho vložil na nějaké hodně špatné místo. |
||
Davex Profil |
#17 · Zasláno: 13. 7. 2015, 20:23:09
Keeehi:
Jenom drobná chybička. Asi by mělo být $0 .
Hitman: Opravdu ti stojí za to, dát si tolik práce s přidáním naprosto zbytečného lomítka do adresy? |
||
Keeehi Profil |
#18 · Zasláno: 13. 7. 2015, 20:32:04
Síla zvyku. Opět opraveno, díky.
|
||
Časová prodleva: 9 let
|
0