Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Mod rewrite, wylaczyc odwolania do.php,przekierowac wszystko poza jpg,css do indexu
Sumo
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.12.2011

Ostrzeżenie: (0%)
-----


Witam! Nie mogę sobie poradzić z mod_rewrite w serwisie opartym na MVC który próbuję napisać.
chciałbym, żeby .htaccess robił 3 rzeczy:
  1. przekierowywał wszystkie żądania do index.php, podając treść żądania po ukośniku. np, z strona.pl/costam1/costam2, robil strona.pl/index.php/costam1/costam2
  2. ...chyba, ze, odwołanie jest do pliku css, jpg etc; żeby nie utrudniać tworzenia layoutu
  3. sprawiał, że żadne odwołanie do pliku .php nie będzie działało

Niestety wszelkie moje próby osiągnięcia takiego efektu kończą się albo niczym, albo błędem 500; a tutoriali mod_rewrite czytałem chyba z 10.
Np. punkt 1szy wyobrażałem sobie tak:
Kod
RewriteEngine On
RewriteRule ^.$ index.php$1 [L]

Jednakże kod ten, nie wywołuje żadnego efektu.
Byłbym bardzo wdzięczny za pomoc w tej kwestii.
Go to the top of the page
+Quote Post
r4xz
post
Post #2





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

Ostrzeżenie: (0%)
-----


Kod
^.$

robi tyle co:
^ - początek ciągu
. - jeden dowolny znak
$ koniec ciągu

rozwiązanie: zamiast . użyj .*

co do punktu 2. poczytaj o RewriteCond (+ REQUEST_FILENAME)
punkt 3. rozwiąże się wraz z punktem 2. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Sumo
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.12.2011

Ostrzeżenie: (0%)
-----


Hm,
RewriteRule ^(.*)/$ index.php$1 [L,QSA] czy
RewriteRule ^(.*)/$ index.php/$1 [L,QSA]
też nie pomaga;

co do 3 jest opcja, żeby zrobić to tak:
we wszystkich folderach, do których chcę zakazać dostępu utwórzyc pliki .htaccess i naklepać tam:
RewriteEngine Off
Deny From All.
brzmi to rozsądnie? include powinno działać mimo to?
Go to the top of the page
+Quote Post
adbacz
post
Post #4





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Zamiast:

RewriteRule ^(.*)/$ index.php$1 [L,QSA]

zrób:

RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Go to the top of the page
+Quote Post
thek
post
Post #5





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ale zapomniano dodać, że jeszcze dodatkowo dobrze sobie zrobić katalogi grupujące to, do czego chcesz dać dostęp bezpośredni. Dobrym pomysłem jest zrobić katalog typu "media" i w nim podkatalogi "css", "js" i inne. W htaccess definiujesz wtedy , że gdy istnieje w danym katalogu realny plik lub folder, to ma z niego odczytywać zamiast przekierować do indexu. Dobrym przykładem jest tu domyślny htaccess FW Kohana, który wygląda tak:
[APACHE] pobierz, plaintext
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3.  
  4. RewriteRule .* index.php/$0 [PT,L]
[APACHE] pobierz, plaintext

co można przetłumaczyć: jeśli wywołany plik nie jest plikiem lub katalogiem na serwerze, to przepisz adres na index.php/ścieżka i puść go do przetwarzania.
Go to the top of the page
+Quote Post
Sumo
post
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.12.2011

Ostrzeżenie: (0%)
-----


adbacz, wciąż błąd 404 : (
thek,
Kod
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule .* index.php/$0 [PT,L]

działa, zaś samo
Kod
RewriteRule .* index.php/$0 [PT,L]

daje błąd 500.
Chciałbym tę drugą opcję, gdyż wolałbym, żeby użytkownik miał dostęp tylko i wyłącznie do jednego pliku php.

Pozdrawiam i dzięki
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie działa tak samo. Zwróć uwagę na warunki, bo to wyrażenie warunkowe. Bez niego http://www.domena.pl/plik.css zostanie wywołany jako http://www.domena.pl/index.php/plik.css a chyba nie o to chodzi. Dlatego taki warunek... "Przewalaj" na plik index.php tylko nie istniejące pliki i foldery. W ten sposób unikasz choćby przewalania plików obrazów, które teoretycznie także mogą być przez plik index.php przerzucane.
Go to the top of the page
+Quote Post
Sumo
post
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.12.2011

Ostrzeżenie: (0%)
-----


Chodzi. Obrazy i wszystko wrzucę do jakiegoś webroot/media folderu i warunek będzie taki, ze jeśli to nie ten folder, to all do indexu.
Nie chcę, żeby userzy mieli dostęp do jakichkolwiek php/
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




To wrzuć je do jednego folderu czy coś i ustaw mu brak dostępu. Znowu odsyłam do domyślnego htaccess Kohany (IMG:style_emoticons/default/wink.gif)
[APACHE] pobierz, plaintext
  1. # Protect application and system files from being viewed
  2. RewriteRule ^(?:application|modules|system)\b - [F,L]
[APACHE] pobierz, plaintext

Go to the top of the page
+Quote Post
Sumo
post
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 25.12.2011

Ostrzeżenie: (0%)
-----


Dobra, śmiga, wielkie dzięki (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 16:45