[ nepoverljiv @ 27.06.2013. 16:12 ] @
Imam problem sa pisanjem lepog URL-a pomocu .htaccess-a i rewrite_mod-a.

U header-u imam link koji vodi na moju kontakt stranicu i koji izgleda ovako:

Code:
<a href="index.php?=kontakt">kontakt</a>


Da bi mi izgledao URL lepo uzeo sam .htaccess i napisao u njemu sledeci kod:

Code:
Options +FollowSymLinks

RewriteEngine On
RewriteRule ^contact index.php?=contact


Onda sam promenio moj link u header-u da izgleda ovako

Code:
<a href="kontakt">kontakt</a>


I sad kad kliknem na taj link ja dobijem lepo napisan url:

Code:
www.svetvencanja.rs/kontakt


Ali me to uvek odvede na pocetnu stranu nikako na kontakt stranicu

Gde gresim?


[ deZio @ 27.06.2013. 23:38 ] @
U jednom delu pišeš contact, a u drugom kontakt, odluči se :D

Druga stvar je što ti u url između znaka pitanja i jednakosti treba stojati promenljiva, a kod tebe nema ništa
[ djordjevic_i @ 28.06.2013. 07:42 ] @
Code:
RewriteRule ^([^/\.]+)/?$ /index.php?=$1 [L]

Zameni sa ovim, trebalo bi da reši stvar.
[ nepoverljiv @ 28.06.2013. 15:04 ] @
Moja greska u pisanju, svuda mi pise kontakt, tako da to nije problem.

@djordjevic_i: Probao sam ali opet ista stvar, prebacuje me na home page a ima lepo napisan url.
[ deZio @ 28.06.2013. 16:31 ] @
Naravno da ti ne radi kad ne pišeš ispravno URL, opet ti kažem da mora da ti stoji ime promenljive između upitnika i znaka jednakosti.

Dakle ovo nije ispravno:
Code:
<a href="index.php?=kontakt">kontakt</a>


A bilo koje od ovog je ispravno:
Code:
<a href="index.php?stranica=kontakt">kontakt</a>

Code:
<a href="index.php?page=kontakt">kontakt</a>

Code:
<a href="index.php?action=kontakt">kontakt</a>


I u kodu moraš proveravati tu GET promenljivu, dakle ako ti je promenljiva "stranica" onda proveravaš
Code:
if( $_GET['stranica'] == 'kontakt' ) { ... }


Kad ovo gore rešiš onda je lako odraditi rewrite kao što ti je djordjevic_i rekao, samo izmeniš na taj način što ubaciš naziv promenljive:

Code:
RewriteRule ^([^/\.]+)/?$ /index.php?stranica=$1 [L]
[ plus_minus @ 28.06.2013. 17:41 ] @
@nepoverljiv

Code (php):


# Ukoliko si 'skeptičan' ili treba da budeš malo više

 $stranica = filter_input(INPUT_GET, 'stranica', FILTER_SANITIZE_STRING);


# ukoliko nisi

 $stranica = $_GET['stranica'];

 


Query string nikada ne sme biti polovičan. Ako samo hoćeš da se zezaš, onda bolje ostavi query name, bez znaka jednakosti i vrednosti iza.. a ne kontra.

Sve u svemu, stavi negde u kodu u lokalu

Code (php):
 
var_dump($_SERVER['QUERY_STRING']);


pa čitaj šta piše kad klikneš na neki link.
I onda će ti verovatno pasti na pamet da se poigraš i sa explode() ...
[ nepoverljiv @ 28.06.2013. 19:28 ] @
Imam ja i explode() i sve i svasta :). Nemam sad vremena da isprobam savete, moram da palim na posao, radim trecu, pa cu sutra da se malo pozabavim ovime i da vam kazem sta sam uradio.

Hvala svima na savetima.

Javljam se sutra popodne.
[ nepoverljiv @ 29.06.2013. 20:21 ] @
Da covek ne poveruje, uspeo sam da napravim za staticke stranice rewrite !!! Yess :)

Znaci stavio sam da mi bude link index.php?page=kontakt, pa to prepravio samo u kontakt a u .htaccess stavio kod:

Code:
Options +FollowSymLinks
 
RewriteEngine On
RewriteRule ^topic/([a-zA-Z0-9]+)/$ index.php?topic=$1


I radi mi.

E sad glavna fora, kako napraviti za dinamicke? Meni ovako ide link:

Code:
<a href=index.php?page=kategorije/$row[id_kat]/$newname>{$row['ime']}</a></li>


gde je $newname ime, koje ako u slucaju u imenu ima praznog prostora da zameni sa -.

Primer jednog linka:

www.svetvencanja.rs/index.php?page=kategorije/1/Sale-za-izdavanje

Kako da napisem da ovakvi linkovi izgledaju kao:

www.svetvencanja.rs/Sale-za-izdavanje
[ deZio @ 29.06.2013. 20:43 ] @
Ono što ti je u osnovnom linku, mora biti i u rewrite linku, kako ne bi morao svaki link ručno unositi u htaccess

Ovaj link: www.svetvencanja.rs/Sale-za-izdavanje nema nigde informaciju da je u pitanju stranica sa kategorijama i id kategorije, tako da ti je to neizvodljivo osim da ručno pišeš rewrite za svaki url.

Znači u novom linku ti mora biti podatak da je u pitanju stranica sa kategorijama, i treba ti id kategorije.

Dakle rewrite možeš napisati da izgleda ovako otprilike:
www.svetvencanja.rs/kat/1/sale-za-izdavanje/

Za link iznad ti je rewrite ovakav:
Code:
RewriteRule ^kat/([0-9]+)/([a-zA-Z0-9-]+)/$ index.php?page=kategorije/$1/$2
[ nepoverljiv @ 29.06.2013. 20:56 ] @
Nece da radi, ja sam uzeo napravio link ovako:
Code:


<a href=kategorije/$row[id_kat]/$newname>{$row['ime']}</a>


I napisao pravilo u .htaccess ovako:

Code:
RewriteRule ^kategorije/([0-9]+)/([a-zA-Z0-9-]+)/$ index.php?page=kategorije/$1/$2


I nece da radi.
[ deZio @ 29.06.2013. 21:11 ] @
Fali ti / na kraju u linku. Napiši ovako:
Code:
<a href=kategorije/$row[id_kat]/$newname/>{$row['ime']}</a>
[ nepoverljiv @ 30.06.2013. 15:02 ] @
Sad mi se desava nesto mnogo cudno. Ako stavim link da mi bude:

Code:
<a href=index.php?page=kategorije/$row[id_kat]/$newname/>{$row['ime']}</a>


Otvori mi normalno stranicu kako bi trebalo.

A kad stavim:

Code:
<a href=kategorije/$row[id_kat]/$newname/>{$row['ime']}</a>


i u .htaccess kod

Code:
RewriteRule ^kategorije/([0-9]+)/([a-zA-Z0-9-]+)/$ index.php?page=kategorije/$1/$2


On mi izbaci belu stranicu nacisto, bez css, html, bez podataka iz baze, samo ispisano sta ima u header-u i alt za banere.

Sta li moze da mu bude?
[ deZio @ 30.06.2013. 15:56 ] @
Kad radiš rewrite na takav način, ne smeš koristiti relativne putanje za linkovanje css, js, img..

Znači npr. ovo ti više ne radi:
Code:
<img src="images/test.jpg" alt="" />

i sve ovakve tagove moraš da staviš apsolutne:
Code:
<img src="http://www.mojsajt.com/images/test.jpg" alt="" />

pošto su ti nakon rewritea kategorije prikazane bez ekstenzije što se podrazumeva da je u pitanju folder, tako da on traži sve slike i fajlove u kategorije folderu, a taj folder ne postoji već je samo deo rewritea. U prvobitnom linku si imao index.php tako da je bilo ok.

Možeš i na početku php fajla staviti neku varijablu
Code:
$root_url = 'http://www.mojsajt.com/';
i onda u htmlu samo ispisuješ vrednost te varijable:
Code:
<img src="<?php echo $root_url; ?>images/test.jpg" alt="" />


Što se tiče upisivanja u bazu, to moraš sam naći testiranjem koja varijabla ti fali u linku, tj. na koji način je hvataš..
[ nepoverljiv @ 30.06.2013. 22:20 ] @
Radi sad sve kako treba, hvala svima. Pozz