PDA

Pogčedajte punu verziju : Htaccess, mod_rewrite problem


nEdImT
28. 01. 2008., 21:35
Htaccess fajl mi izgleda ovako:

RewriteEngine On
RewriteBase /fitness/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ $1/ [R,L]

RewriteRule ^(.+)/(.+)/$ index.php?sta=$1&id=$2 [L,QSA]
RewriteRule ^(.+)/$ index.php?sta=$1 [L,QSA]

Kad otvorim: http://localhost/fitness/kategorija/1/ ne prikaže mi css i sliku (logo), dok kad otvorim http://localhost/fitness/kategorija&id=1/ prikaže. Gdje sam pogriješio u kodu?

Zahvaljujem.

noviKorisnik
28. 01. 2008., 23:51
Tvoj browser nije svestan mod rewrite zavrzlama pa putanje računa relativno u odnosu na lokaciju koju je dobio.

Možeš da koristiš u html-u base tag i href atribut (u head sekciji) da pomogneš browseru u orijentaciji, ili da putanje navodiš relativno u odnosu na root sajta (adresu počneš sa '/').

nEdImT
29. 01. 2008., 12:01
Tvoj browser nije svestan mod rewrite zavrzlama pa putanje računa relativno u odnosu na lokaciju koju je dobio.

Možeš da koristiš u html-u base tag i href atribut (u head sekciji) da pomogneš browseru u orijentaciji, ili da putanje navodiš relativno u odnosu na root sajta (adresu počneš sa '/').

Stavio sam u <head> ovo: <base href="http://localhost/fitness/" /> i radi mi ono sad .../kategorija/IDovdje/ , ali ne radi kada ima:

../kategorija/IDovdje/Naziv-ovdje-ide/

dakle: ?sta=kategorija&id=IDbroj&naziv=naziv-ovdje-ide, ovako je u htaccessu:

RewriteRule ^(.+)/(.+)/$ index.php?sta=$1&id=$2&naziv=$3 [L,QSA]

nEdImT
29. 01. 2008., 12:34
Pošto neće edit moram novi post:

Skontao sam neke stvari. Da bi mi pomogao moram ti opisati kako radi skripta kompletna. Imam tabelu "lokacije" u kojoj imam "url", "inc". I sad u ako je "url" kategorije, "inc" je kategorije.php

I sad npr. kad otvorim ?url=kategorije includa kategorije.php u posebnu tabelu, i tu mogu odabrati ko ima pristup administrator,logovani korisni,gost i tako. I sad ja kad otvorim ovako:

http://localhost/fitness/kategorija/7/riba/ dobijem poruku:

Warning: Smarty::include() [function.include]: Failed opening '' for inclusion (include_path='.;\xampp\php\pear\') in C:\xampp\htdocs\fitness\libs\Smarty.class.php on line 1925

Dakle, ne radi mi ono $inc , a taj isti $inc dobijam, ovako: "SELECT * FROM lokacije WHERE url='$spremi' AND tip='site'", a $spremi = $_GET["sta"] , dakle dobijam podatke o lokaciji WHERE url='$spremi', a $spremi treba da bude ono ?sta=nesto i sad da gleda u tabeli lokacije...

I kad odem echo $spremi; a u browseru mi je otvoreno http://localhost/fitness/kategorija/7/riba/ $spremi izgleda ovako: kategorija/7/riba i normalno je da mi nece da includa jer tamo ne moze da dobije podatke o lokaciji (koji fajl ce includati i sl.), ne znam otkud mi se to javlja... a nece mi sad ni ..&id=nesto da otvori tj ../nesto/id/ Tako da bi trebalo rjesiti problem oko $spremi .

Moze biti problem do htacces fajla pa lose skonta ono ?sta=.. pa spoji u jedno tj u ovo "sta"

noviKorisnik
29. 01. 2008., 14:00
Evo predlog da uradiš to jednostavnije.

RewriteRule ^(.+)$ index.php?path=$1 [L,QSA]

Jedno jedino pravilo umesto više. Ostalo radi php.

$_PATH = explode ('/', $_GET ['path']);

Dobiješ niz 'direktorijuma' putanje, pa onda odluči u samoj aplikaciji kakvu semantiku ćeš da dodeliš pojedinim članovima niza.

nEdImT
29. 01. 2008., 14:25
Evo predlog da uradiš to jednostavnije.

RewriteRule ^(.+)$ index.php?path=$1 [L,QSA]

Jedno jedino pravilo umesto više. Ostalo radi php.

$_PATH = explode ('/', $_GET ['path']);

Dobiješ niz 'direktorijuma' putanje, pa onda odluči u samoj aplikaciji kakvu semantiku ćeš da dodeliš pojedinim članovima niza.

Hvala. Tražio sam ovakvu funkciju gdje bih iz uzeo ono šta hoću iz samog stringa...

Hvala puno!! :1094: