Autor | Zpráva | ||
---|---|---|---|
Gray blogger Profil * |
#1 · Zasláno: 7. 10. 2019, 01:27:21
Moc nechápu ten systém zápisu.
RewriteRule ^todo/([a-z0-9]+)$ index.php?todo=$1 [R=301,QSA] Nechápu proč ^todo/([a-z0-9]+)$ proč ne takto: todo/([a-z0-9]+)$1 ? Ta levá strana přece má říkat, za co se to má zaměnit ne? Nechápu proč v pravé straně, která říká co má hledat je reference na obsah kulaté závorky. Spíš by se mi zdálo logické mít to takto: RewriteRule ^todo/$1 ^index.php?todo=([a-z0-9]+)$ [R=301,QSA] Což by byla syntaxe RewriteRule replacement search Nedává mi smysl to jak to maj, protože význam chápu asi takto: RewriteRule (search)replace((search))(search) search(replace) RewriteRule ^replace(search)$ search$1 První uvedený kód by měl zaměnit argument /todo/st za ?todo=st, což funguje, ale jak to mám změnit když chci aby /todo/st bylo chápáno jako ?todo=st aniž by se změnila ta url adresa? Po odeslání požadavku aby zůstala hezká url ve tvaru /todo/st. |
||
Kajman Profil |
#2 · Zasláno: 7. 10. 2019, 04:37:15
Chápete to špatně nebo jste narazil na špatný studijní materiál. Přečtěte si návod lépe. Nepoužívejte flag R, pokud nechcete měnit url. Nepoužívejte 301 pro neodladěná pravidla, nebo si je prohlížeč zapamaruje. Používejte flag L, pokud nejste jistý, že ho chcete vynechat.
|
||
Gray blogger Profil * |
Kajman:
Díkes Už asi chápu jak to funguje. To co je na levo je hledaná část v url jako todo/neco a v pravo je pak jak se to má změnit. Jenže pak tedy nechápu proč třeba stránka recepty.vareni.cz/palacinky vypadá pěkně? Je to tím, že tam fyzicky vytvořili ten adresář? Jako že by pro každý článek vytvářeli složku? To asi ne... Jde mi o to, že když kliknu na ten url, tak url zůstane pěkná, aniž by tam bylo recepty.vareni.cz/?id=palacinky |
||
Kajman Profil |
#4 · Zasláno: 7. 10. 2019, 09:07:44
Protože tam nemají flag R a dojte tak jen k vnitřnímu podstrčení.
Stále mám pocit, že jste si nepřečetl manuál (syntaxe je hned na druhém řádku) ani místní linky se sekce "Mohlo by se hodit", kde je rozdíl mezi podstrčením a přesměrováním několikrát zmiňován. |
||
Gray blogger Profil * |
#5 · Zasláno: 7. 10. 2019, 09:31:54
To je dobrý, ten vámi odkazovaný článek jsem si přečetl a hned mi to funguje ale na jiném řetězci:
RewriteRule ^clanek-(.*) ?todo=st |
||
Ikki Profil |
#6 · Zasláno: 7. 10. 2019, 09:58:51
Chyba není v zápisu, ale v porozumění dokumentaci.
|
||
Gray blogger Profil * |
Co dělám špatně když chci mysite změnit na mysite/home ? První pravidlo mi dává mysite/home.php . A když pokračuju "najít řetězec zakončený na .php" a zaměnit na mysite/home ... tak dostanu 404 Not found
RewriteRule ^$ /home RewriteRule ^(.*)\.php$ $1 Myslím že koncovka .php by se zobrazovat nemusela |
||
Kajman Profil |
#8 · Zasláno: 7. 10. 2019, 11:17:58
Gray blogger:
„Co dělám špatně když chci mysite změnit na mysite/home ?“ U prvního pravidla chybí flagy určující přesměrování - doporučuji [R,L,NE]
Dál se ztrácím, protože to, co píšete, vůbec neodpovídá pravidlům. Že Vy jste ty odkazy s návody ještě nečet. Pokud máte tolik času, že návody nečtete a všechno děláte pokus - omyl - dotaz na diskusi - pokus - omyl - dotaz diskusi, tak si zapněte logování a dělejte jen kolečka pokus - omyl bez zbytečných dotazů. Možná se snažíte o něco jako phpfashion.com/hadanka-znate-mod_rewrite |
||
Gray blogger Profil * |
Ale to první pravidlo mi funguje, alespoň takto
RewriteRule ^$ /home [L,NE] -> url: localhost/mysite/home.php S R to nenajde soubor (hledá soubor home místo home.php). Jsem zkoušel to řešení z odkazovanéh očlánku a to mi nefunguje vůbec # exists file with extension? RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^.*$ $0.php [L] # redirect, but only once RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ $1 [L,R=301,NE] Url: localhost/hmat/home Se mě snaží přesměrovat na localhost/P:/www/mysite/home |
||
Kajman Profil |
#10 · Zasláno: 7. 10. 2019, 13:14:10
Gray blogger:
„Jsem zkoušel to řešení z odkazovanéh očlánku a to mi nefunguje vůbec“ Vypadá to, že jste ani nedokázal zkopírovat všechny řádky. Nezapomněl jste na RewiteBase? Navíc u Vás nejspíše nastavené na /mysite/ Možná si pro jistotu vypnětě MultiViews <IfModule mod_negotiation.c> # vypnout automatické vyhledávání alternativ Options -MultiViews </IfModule> |
||
Gray blogger Profil * |
Máte pravdu, ale já už začal používat
RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule (.*) $1.php [L] A ten home se mi už zobrazuje bez php. Mám dotaz, neměl byste nějaký trik, aby se mi automaticky zaměňovala cesta z localhost na mysite.wz.cz pokud stránka není nahraná na web, ale když ji nahraju aby se to automaticky opravilo? Ptám se proto, že jsem pochopil, že musím všude používat absolutní cesty. Když si ve konfiguračním souboru moji aplikace nastavím: $default_styles = "localhost/mysite/css/styles.css"; $default_styles = "mysite.wz.cz/css/styles.css"; A taky mám dotaz k těm cestám co používám v php jako: $tmp_working_path = "./tmp/working"; $sign_up_path = "./tmp/signup"; to mohu psát relativně nebo se to musí taky psát absolutně? |
||
Keeehi Profil |
#12 · Zasláno: 7. 10. 2019, 21:50:55
Gray blogger:
Použij absolutní cesty, ale bez domény. $default_styles = "/css/styles.css"; „A taky mám dotaz k těm cestám co používám v php jako: ...“ Mám takový pocit že to budou cesty na serveru, takže na ty nešahej. |
||
Gray blogger Profil * |
#13 · Zasláno: 8. 10. 2019, 10:19:08
Keeehi:
Ne, to jsou moje cesty, ale na ty to naštěstí nemá vliv. |
||
Časová prodleva: 5 let
|
0