PDA

Pogčedajte punu verziju : Mod rewrite - uklanjanje .php i codeigniter


spezia
13. 02. 2012., 13:46
Pozdrav,

Ako ima slicna tema nek neko baci link, preko google nisam nasao ono sti mi treba...

recimo imam ovakav url

http://test.localhost/admin.php/skola/profesor/djak

Meni treba da se ukloni .php i da bude

http://test.localhost/admin/skola/profesor/djak

Problem je sto posle ne vidi /skola/profesor/djak i ispisuje
The requested URL was not found on this server.

Probao sam razne tutoriale i nisam razumeo gde gresim..,


Probao sam ovako

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^admin$ admin.php/$1 [NC,L]


Meni ovo kaze, ako nadjes u url "admin" zameni sa admin.php... Samo neznam sta cu sa ovim nastavkom /skola/profesor/djak...

Dušan Dželebdžić
13. 02. 2012., 14:11
Ne ulazeći u rewrite pravila, da li ti je u Apache (vhost?) konfiguraciji uključen AllowOverride?

[DOPUNA] Da li si ispratio uputstvo sa http://codeigniter.com/wiki/mod_rewrite?

dinke
13. 02. 2012., 14:13
Ne znam odakle ti ono "admin.php" u linku ali obzirom da je u pitanju CodeIgniter, moj "wildguess" je da si default index stranu (index.php) u CI congifu zamenio sa admin.php. Imas u manualu (http://codeigniter.com/user_guide/general/urls.html) kako se otarasiti toga, npr za index.php bilo bi:


RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]


na ovaj nacin ces linkove poput foo.com/index.php/controler/method zameniti sa foo.com/controler/method. Naravno u ovom primeru samo trebas da zamenis index sa admin.

Takodje mislim da osim ovoga nema potrebe preterano prckati sa mod_rew-om posto CI ima odlicnu ruting klasu, pogledaj http://codeigniter.com/user_guide/general/routing.html za vise informacija.

eraser
13. 02. 2012., 14:39
Sad sam gledao default podesavanja kod sebe i ovo stoji:
/*
By default CodeIgniter uses search-engine friendly segment based URLs:
| example.com/who/what/where/
|
| You can optionally enable standard query string based URLs:
| example.com?who=me&what=something&where=here
|
| Options are: TRUE or FALSE (boolean)
*/
$config['enable_query_strings'] = FALSE;
Pogledaj u config.php ...

Br@nkoR
13. 02. 2012., 15:05
Probao sam ovako

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^admin$ admin.php/$1 [NC,L]


Meni ovo kaze, ako nadjes u url "admin" zameni sa admin.php... Samo neznam sta cu sa ovim nastavkom /skola/profesor/djak...
Ovo bi trebalo da znači ukoliko je URL jednak "admin", zbog znakova ^$ (početak/kraj), pokušaj i npr:
RewriteRule ^admin/(.+) admin.php/$1 [L]
ili

RewriteCond %{REQUEST_URI} ^/admin/(.+)
RewriteRule .+ admin.php/%1 [L]

spezia
13. 02. 2012., 16:18
Ovo bi trebalo da znači ukoliko je URL jednak "admin", zbog znakova ^$ (početak/kraj), pokušaj i npr:
RewriteRule ^admin/(.+) admin.php/$1 [L]
ili

RewriteCond %{REQUEST_URI} ^/admin/(.+)
RewriteRule .+ admin.php/%1 [L]


Ovo mi je trebalo...
Da, nemam index.php, jer ide malo drugacije aplikacija pa mi je zato potrebno da admin ostane u url ali bez .php, da bi bio lepsi url, he
Hvala svima na pomoc