Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP].htaccess
Forum PHP.pl > Forum > Przedszkole
el Santiago
Mam serwer i z pomocą .htaccess chcę aby user wykorzystywał rozszerzenie .html które będzie odczytywało ustalone pliki .php

RewriteRule ^([^-]+)-.html$ jakisplik.php? [L]


I chcę teraz w tych regułach zablokować dostęp do plików .php a dopuścić by mógł korzystać z html.

plik.php nie jest zapisany jako plik.html zatem nie mogę użyć reguły cokolwiek.html czytaj jako cokolwiek.php lub *.html odczytywać parserem PHP.
erix
Cytat
I chcę teraz w tych regułach zablokować dostęp do plików .php a dopuścić by mógł korzystać z html.

RewriteCond na %{REQUEST_URI} i potem blokujesz przez jakąś regułkę.
el Santiago
Hmm...

Można RewriteCond %{REDIRECT_URL} !\.(html)$ ? /Wywołanie .html'a ma zadziałać, reszty już nie (to co jest w .htaccess działać powinno).

Czy ew. da się porównać {REDIRECT_URL} z {REQUEST_URI} - jeśli są różne - otwierać dostęp, przy równości - blokowanie.
erix
A komputer Cię kopnie, jak sam spróbujesz?
el Santiago
Cytat(erix @ 21.08.2009, 17:17:54 ) *
A komputer Cię kopnie, jak sam spróbujesz?


eeeerix, przecież próbuję ale nie wychodzi!

Nie zakładajmy że czekam aż ktoś ZA MNIE zrobi ale MI POMOŻE winksmiley.jpg
erix
No to pokaż kod tych prób i rezultat.
el Santiago
Cytat(erix @ 21.08.2009, 19:34:34 ) *
No to pokaż kod tych prób i rezultat.


RewriteCond %{REQUEST_URI} != ^([^-]+).html$
Bo wystarczy żeby nie posiadał .html aby wyświetlić brak rezultatów (jakikolwiek błąd). Zatem sprawdzamy stan rozszerzenia (dopuszczamy tylko .html).
RewriteRule .* - [F]
erix
[APACHE] pobierz, plaintext
  1. RewriteCond %{REQUEST_URI} !^([^-]+)\.html$
[APACHE] pobierz, plaintext
el Santiago
Niestety odrzuca [Zabroniony dostęp] każde wywołanie jakiegokolwiek pliku /php/html etc.

Edit:

RewriteCond %{REQUEST_URI} !^([^-]+).html$
RewriteRule .* - [F]

Też nie działa, to wygląda jakby wiedział że zaraz plik.html z paska adresu odczyta z pliku jakisplik.php ;/
erix
Bez wykrzyknika. ;p
el Santiago
No ale wtedy:

[APACHE] pobierz, plaintext
  1. RewriteCond %{REQUEST_URI} ^([^-]+).html$
[APACHE] pobierz, plaintext


Warunkiem jest zgodność z rozszerzeniem .html

Czyli:

index.html - BLOKADA
costam.html - BLOKADA

index.php - DZIAŁA
poczta.php - DZIAŁA


A ja chcę:

ADRES ---> --->RZECZYWISTY PLIK (FIZYCZNY)
index.html ---->.htaccess(RewriteRule) ---> index13231.php

ale:

index13231.php--->.htaccess(RewriteRule) ---> BRAK DOSTĘPU

Rozwinę:

Chcę wykluczyć wyświetlanie wszystkiego co w pasku nie ma rozszerzenia .html (choć fizycznie istnieje z innym rozszerzeniem).
erix
Ech, przecież sam mu każesz... Flaga [F] jest za to odpowiedzialna...
el Santiago
No ja wiem ale:


1.
RewriteCond %{REQUEST_URI} ^([^-]+).html$
RewriteRule .* - [F]

Odrzuca wszystkie pliki .html(w pasku adresu), pliki PHP(w pasku adresu) akceptuje. Mnie chodzi o odwrotne działanie więc:

2.
RewriteCond %{REQUEST_URI} !^([^-]+).html$
RewriteRule .* - [F]

Odrzuca wszystko sad.gif i html i php

3. Kiedy zmienię na:
RewriteCond %{REQUEST_URI} ^([^-]+).php$
RewriteRule .* - [F]

- blokowanie plików .php - blokuje WSZYSTKO ;/


---
Doszedłem do pewnej konkluzji: nie można używać reguł wykluczających w .htaccess do plików które są (w jakikolwiek sposób) wyszczególnione w nim samym!

RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule .* - [F]

Zablokuje mi też dostęp do tego pliku przy wpisaniu nawet index.html! ;/

Mylę się?
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.