Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess] ukrywanie plików w public_html a profile użytkowników
Forum PHP.pl > Forum > Przedszkole
lisekkpl
Jak zablokować możliwość używania login.php, register.php itd. przez www.nazwastrony.pl/login.php, tak żeby tylko działało www.nazwastrony.pl/accounts/login. Linki do profilów tworzą się po sleszu. Podczas rejestracji dozwolone jest używanie kropek więc jeśli ktoś zrobi użytkownika login.php to nie będzie przenosić na profil tylko na stronę logowania
jeśli ktoś jeszcze nie rozumie to linki do profilów lecą tak:
www.nazwastrony.pl/profile.php?username=lisekpl jest zamieniane na www.nazwastrony.pl/lisekpl
ale po wpisaniu
www.nazwastrony.pl/login.php przenosi na stronę logowania zamiast na profil
logowanie ma się odbywać tylko przez www.nazwastrony.pl/accounts/login!!
Wszystkie pliki znajdują się w public_html. Proszę pomóżcie
tutaj moje htaccess (nie dorobiłem kropki w profilach bo nie wiem jak to zrobić):
  1. RewriteEngine On
  2. RewriteCond %{REQUEST_FILENAME} !-f
  3. RewriteCond %{REQUEST_FILENAME} !-d
  4. RewriteRule ^hashtag/([A-Za-z0-9_]+)$ hashtag.php?hashtag=$1
  5. RewriteRule ^([A-Za-z0-9_]+)$ profile.php?username=$1
  6. RewriteRule ^accounts/logout logout.php
  7. RewriteRule ^accounts/login login.php
  8. RewriteRule ^accounts/index index.php
  9. RewriteRule ^accounts/register register.php
by_ikar
Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(logout|login|index|register)\.php$ /accounts/$1 [R=301,QSA,L]
RewriteRule ^hashtag/([\w]+)$ hashtag.php?hashtag=$1 [L]
RewriteRule ^([\w\.]+)$ profile.php?username=$1 [L]
RewriteRule ^accounts/logout$ logout.php [L]
RewriteRule ^accounts/login$ login.php [L]
RewriteRule ^accounts/index$ index.php [L]
RewriteRule ^accounts/register$ register.php [L]


EDIT: na przyszłość http://eriz.pcinside.pl/weblog/mod_rewrite...wiazac-208.html
lisekkpl
Nic nie moge zrobić na stronie np jak wpisze adres strony to próbuje wejść na profil użytkownika index.php a jak wchodzę na www.nazwastrony.pl/accounts/login to przeglądarka wywala że jest pętla przekierowań
by_ikar
No to nie rozumiem co ty tam masz namieszane. Generalnie samo to że ustawiłeś

Kod
RewriteCond %{REQUEST_FILENAME} !-f


powinno wystarczyć w przypadku przejścia na adresy index.oho, login.php etc. Tego typu regułki które łapią wszystko muszą być na samym końcu przepisywania regułek. Spróbuj to przenieść na sam koniec:

Kod
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(logout|login|index|register)\.php$ /accounts/$1 [R=301,QSA,L]
RewriteRule ^hashtag/([\w]+)$ hashtag.php?hashtag=$1 [L]
RewriteRule ^accounts/logout$ logout.php [L]
RewriteRule ^accounts/login$ login.php [L]
RewriteRule ^accounts/index$ index.php [L]
RewriteRule ^accounts/register$ register.php [L]
RewriteRule ^([\w\.]+)$ profile.php?username=$1 [L]


i sprawdź czy to coś zmieni. Pewnie łapie kropkę z tej nieszczęsnej regułki, jako kropkę z pliku. No ale przecież masz wcześniej regułkę od plików.. Dlatego tego typu zabaw nie powinno się robić w htaccess tylko na poziomie routingu..
lisekkpl
nadal to samo
mogę prosić o linka do jakichś prostych routerów? może popróbuje z tym
lisekkpl
mogę prosić o pomoc w konfiguracji tego aby działało w ten sposób jak to opisałem w temacie
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.