PDA

Pogčedajte punu verziju : Usmeravanje svakog request-a na jedan fajl


_korso_
17. 10. 2009., 14:38
Imam sledeci problem. Da napomenem da nisam neki poznavalac mod_rewrite-a, pa cu se zato potruditi da lepo opisem sta zelim da dobijem.

Zelim da postignem da svaki request na sajt (a da nisu slike, js, css) prodje kroz odredjeni fajl npr. server.php koji se nalazi u nekom boot direktorijumu. (/boot/server.php)

Dakle struktura direktorijuma bi izgledala ovako:

/site
/boot/
server.php
/folder2
/folder3
...


Evo primera. Kada kucam "dev.site.com" i "dev.site.com/blabla" da se u pozadini izvrsi obrada request-a kroz boot/server.php

Evo mog httpd.conf fajla (dela sa VH):

<VirtualHost *:80>
DocumentRoot c:\workspace\site
ServerName dev.site.com
<Directory c:\workspace\site>
AllowOverride All
</Directory>
</VirtualHost>


i .htaccess fajla koji se nalazi u root-u "site" dir-a:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?$|. /boot/server.php [L]


E sada ovo radi za "dev.site.com/blabla" kao sto zelim.
Ali za "dev.site.com" dobijam "403 Forbidden", a u error logu
"Directory index forbidden by rule: C:/workspace/site/".

Cenim da ovo nije neko tesko pitanje, ali kako sam "tanak" sa ovim, za mene bas jeste tesko :).

I jos jedno pitanje (mozda nije na mestu, ali kako nisam dobar sa ovom tematikom), da li bi ovakav rewrite rule imao neki "znacajan udar" na performanse?

Unapred hvala !

vlada.jerkovic
18. 10. 2009., 00:26
While URL manipulations in per-server context are really fast and efficient, per-directory rewrites are slow and inefficient. link (http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html)

Kada sam ukljucio na mom sajtu mod_rewrite ucitavanje svake stranice se primetno usporilo. To je neki deljeni server i nisu svi resursi podredjeni mom sajtu, tako da utice na performanse.

void
21. 10. 2009., 23:11
Evo ti primer koji se koristi u Kohana (http://kohanaphp.com) projektima:


# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /

# Protect application and system files from being viewed
RewriteRule ^(application|modules|system) - [F,L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]


Mozes maknuti (ili komentirati):
# Protect application and system files from being viewed
RewriteRule ^(application|modules|system) - [F,L]

Izmeni index.php u /boot/server.php/$0