Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess] Jak udostępnić pliki powyżej katalogu htdocs?
Forum PHP.pl > Forum > Serwery WWW > Apache
MacDada
Hej,

struktura plików jest mniej-więcej taka:

MAMP/WebApps/aplikacja/static/__pliki__
MAMP/htdocs/aplikacja/__pliki__

W tym drugim katalogu mam plik .htaccess o takiej m.in. treści:
RewriteRule ^static/(.*)$ ../../aplikacja/static/$1

Chodzi o to, żeby rozdzielić pliki dostępne dla użytkownika od tych, które są dostępne tylko dla aplikacji, więc pliki aplikacji znajdują się powyżej ścieżki root serwera. Jednakże część plików chciałbym, żeby była dostępna bezpośrednio (grafiki, js, itp).

Jak się okazuje, powyższa reguła nie działa, dostaję Bad Request (400). Czy więc za pomocą .htaccess mogę przekierowywać tylko do plików które znajdują się w MAMP/htdocs/ czy jest jakaś opcja, żeby dostać się „wyżej”?

pozdr.
everth
Zastanów się co by się działo gdyby Apache pozwalał zewnętrznym użytkownikom wychodzić poza katalog www (czy jak tam w windowsie jest nazywany root apache). Odpowiedź - bardzo źle by się działo. Jeśli nawet istnieją obejścia żeby dostać się wyżej - nie próbuj, tylko znajdź inny sposób żeby to zrobić w ramach katalogu www.
MacDada
No cóż, w takim razie będzie po prostu MAMP/htdocs/aplikacja/static/__pliki__.

A co do tego czy można się dostać do katalogów wyżej... tak, można. Przy wykorzystaniu PHP zamiast mod_rewrite.
erix
Cytat
Zastanów się co by się działo gdyby Apache pozwalał zewnętrznym użytkownikom wychodzić poza katalog www (czy jak tam w windowsie jest nazywany root apache).

Sprawdziłeś? Nie sprawdziłeś, więc nie rób mu wody z mózgu. Tak naprawdę, Apache musi mieć dostęp do niektórych plików wyżej. Poza tym, jak sobie wyobrażasz - zgodnie z Twoją teorią - przenoszenie skryptów poza public_html?

Wystarczy jako podstawnik podać ścieżki bezwzględne i zawsze będzie się dało, nie ma co kombinować z PHP.
everth
@erix - zrobi jak będzie chciał. Sprawdzałem - u mnie za cholerę nie da się przełączyć ponad katalog /var/www/ (który apache widzi jako /) za pomocą htaccess, i jest to dla mnie logiczne. Jeśli XAMPP pozwala za pomocą .htaccess poruszać się poza korzeniem to... Zresztą nieważne. Apache jako proces z zasady ma dostęp do plików systemowych, nie oznacza to że użytkownicy łączący się przez port 80 także dostają takie uprawnienia.

W jego propozycji i tak było trochę niekonsekwencji. Chciał wyciągnąć pliki do których dostęp mają mieć jedynie skrypty, dobrze nic nie stoi na przeszkodzie, parser php miał do nich dostęp. Ale on chciał jeszcze przyznać niektórym tym plikom dostęp bezpośredni poprzez http (jeśli dobrze rozumiem). No to ja się pytam gdzie tu logika? I tak zeszło na jedyne normalne rozwiązanie czyli include w index.php
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.