Autor Zpráva
Gray blogger
Profil *
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)
čili
RewriteRule ^replace(search)$ search$1
Nechápu jaká je logika a jak to může fungovat.

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
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
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 *
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
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
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
->
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
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";
tak by se to samo přejmenovalo na
$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
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 *
Keeehi:
Ne, to jsou moje cesty, ale na ty to naštěstí nemá vliv.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0