Przyjazny adres strony a odwołania do istniejących plików/folderów.

Odpowiedz Nowy wątek
2011-07-14 21:31
RoXio
0

Witam serdecznie,

Znalazłem w internecie kod (ze względu na to, że moje umiejętności w tej kwestii są marne), który pozwala na stworzenie 'przyjaznego' adresu strony.

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule  ^(.*)$ /strona/index.php/$1 [L]

Działa on bez zarzutu, gdy podam jakiś obsługiwany adres np. strona/uzytkownicy/. Problem pojawia się gdy użyję nazwy istniejącego pliku np. strona/users/ wtedy wczytuje się plik users.php pomijając index.php. W jaki sposób należy zmodyfikować powyższy kod, aby nie można było przejsć do żadnego folderu ani pliku znajdującego się na serwerze do którego nie odwoła się plik-loader?

Pozdrawiam

Pozostało 580 znaków

2011-07-14 21:37
RoXio
0

Witam ponownie,

W powyższym kodzie znajduje się błąd (skopiowałem z backup'u). Oto ten, z którego korzystam:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(.+)$ /strona/index.php/$1 [L]

Przepraszam, za pomyłkę.

Pozostało 580 znaków

2011-07-15 12:28
0

Problem pojawia się gdy użyję nazwy istniejącego pliku np. strona/users/ wtedy wczytuje się plik users.php pomijając index.php

nie rozumiem, dlaczego?
w ogóle masz folder nazwany index.php?

Wg tej logiki i tego co mogę się domyślić wystarczy Ci tylko (ale robienie czegoś takiego jest ekstremalnie bez sensu - każdy pliczek będziesz musiał podawać przez php - dochodzi tutaj napisanie mechanizmu do cacheowania, wznawiania transferów i takie tam cuda - bez których nagle cała strona będzie powolna, zżerać niepotrzebnie transfer itd.):
RewriteBase /
RewriteEngine On
RewriteRule ^(.*)$ index.php/$1 [L]

Lepiej do "zakazanego" (np z plikami do includowania) folderu wsadź plik .htaccess z treścią: deny from all


Pozostało 580 znaków

2011-07-15 12:52
RoXio
0

Nie, nie mam folderu nazwanego index.php, jednak posiadam foldery m. in. themes, admin i poprzez podanie adresu /strona/admin/ przechodzę od razu do folderu admin a zależałoby mi na tym, żeby serwer nie podejmował żadnej akcji (tzn. zeby wszystko po domenie było ignorowane i abym mógł to obsłużyć z poziomu php).

Podany kod u mnie nie działa tj. kod błedu 500 (zmieniłem ścieżkę dostępu).

Pozostało 580 znaków

2011-07-15 20:42
gienek53221
0

nie prosciej skonfigurowac ustawienie default document na poziomie serwera?

Pozostało 580 znaków

2011-07-15 22:26
0
gienek53221 napisał(a)

nie prosciej skonfigurowac ustawienie default document na poziomie serwera?

I mieć pliki w "głębokim ukryciu" jak bank PKO swojego czasu?
Lepiej żeby niebezpieczne rzeczy były niedostępne z zewnątrz, a nie tylko niewidzialne.


Women were the reason I became a monk - and, ah, the reason I switched back...
edytowany 1x, ostatnio: Demonical Monk, 2011-07-15 22:26

Pozostało 580 znaków

2011-07-16 12:00
RoXio
0

Witam,

Ostatecznie przygotowałem taki kod (folder główny):

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /strona/index.php/

<Files "users*">
deny from all
</Files>

oraz taki dla podfolderów:

RewriteEngine On
RewriteRule ^(.*)$ /strona/index.php/ [R,L]

Czy w ten sposób zabezpieczone pliki są bezpieczne? Prosiłbym o ewentualne wskazówki :)

Pozostało 580 znaków

2011-07-16 23:04
0

no niby, ale to co powinieneś naprawdę zrobić to wyrzucić ten folder poza htdocs i odwoływać się w php przykładowo przez "../users/"


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0