Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP].htaccess zrobienie wyjatku ?
Forum PHP.pl > Forum > Przedszkole
AniaR
zawartosc .htaccess

RewriteEngine on
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?do=$1 [L]


dziala i adresy http://domena.pl/parametr odczytuje jako http://domena.pl/do=parametr

jednak nie zawsze chce aby tak bylo.. chcialabym ale po wpisaniu adresu : http://domena.pl/STRONA nie odczytalo jej jako http://domena.pl/do=STRONA a poprostu weszlo do katalogu STRONA..


czy jest na to sposób ?
thek
Tak, jest. Reguły htaccess wykonują się po kolei. Wystarczy więc ową regułkę dać wcześniej. Inna sprawa, że reguły wykonują się w normalnej sytuacji wszystkie po kolei i trzeba dodatkowo dorzucić flagę [L] by, jeśli wzorzec się zgadza, zakończył przetwarzanie htaccess.
AniaR
hmm a jak powinna wygladac taka reguła ktora slowo STRONA nie zamienia na ?do=STRONA questionmark.gif

i gdzie dokladnie mam ja zamiescic?

tu:

RewriteEngine on
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

TUTAJ TRESC TEJ REGULY

RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?do=$1 [L]



wpisujac tak

RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php/$1 [L]
lub
RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php/STRONA [L]

faktycznie nie dostaje bledu, jednak strona nie przekierowuje do katalogu STRONA..

prosze o pomoc.. jak napisac regule ktora po wpisaniu adres: http://domena.pl/KATALOG poprostu przekieruje do tego katalogu i wyswietli jego zawartosc
thek
Tę dodatkową regułę musisz wcisnąć zaraz po DirectoryIndex, przed wszystkimi innymi regułami oraz oznaczyć ją flagą L. Inaczej nie zadziała prawidłowo. Co do reguły to zależy czy zagłębienia mają być jedno czy wielopoziomowe. Co innego bowiem domena.pl/KATALOG a co innego domena.pl/KATALOG/inny_katalog
AniaR
Domena jest przypisana do katalogu FOLDER, w tym katalogu jest plik .htaccess ktory tworzy mi przyjaze urle. W kalatku FOLDER jest katalog STRONA i chialabym aby zadne reguly sie go nie dotknely. W katalogu strona sa tez inne katalogi i to duzo innych katalogow. Chcialabym aby te regoly z katalogu glownego nie dotykaly zadnych plikow ani katalogow w katalogu STRONA...
thek
To w takim wypadku najlepiej będzie wrzucić do tego folderu KATALOG osobny htaccess, który zająłby się przetwarzaniem adresów w nim zawartych. Tak jest to bowiem rozwiązane normalnie, że jeśli odnosisz się do katalogu który ma własny htaccess, to zastępuje on reguły, które normalnie byłyby wykonywane przez htaccess z katalogu wyżej - ma wyższy priorytet.
AniaR
Tak tylko ze ja wogole nie moge wejsc pod ten adres: http://domena.pl/STRONA bo moja aplikacja mysli ze STRONA to jest pierwszy parametr po znaku zapytania w adresie i tak to interpretuje a nie jako wejscie do katalogu. Sprawca jest ta linijka w .htaccess w katalogu glownym: RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?do=$1 [L]

Aplikacja mysli ze katalog STRONA to parametr do.. no ale to normalne w koncu tak mowi regula..

Do katalogu STRONA dalam .htacces z taka trescia:

RewriteEngine on
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

jednak to nic nie daje, nie mam mozliwosci wejscia pod ten adres: http://domena.pl/STRONA bo .htacces z poziomu wyzej blokuje mi ta mozliwosc..

Wystepuje blad:

[Error : Błąd]

[500] Internal Server Error : Wewnętrzny błąd serwera


przypomne ze .htacces z katalogu glownego ma taka tresc:
RewriteEngine on
DirectoryIndex index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z-_0-9]+)/([a-zA-Z-_0-9]+)/?$ index.php?do=$1&kadrowanie=$2 [L]

RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?do=$1 [L]



..


thek
Flagi -f i -d pozwalają wyświetlać katalogi i pliki bezpośrednio w oknie przeglądarki. Ale czy masz określone co robić z nimi by nie przepisywało? Nie masz nic poza owymi dwoma regułami, które zresztą dublujesz z głównego htaccess. Jako że serwer znalazł w STRONA htaccess to stara się z niego użyć co może. Ale że nie ma nic konkretnego co by robiło dalej cokolwiek to oleje sprawę i uzna, że główny htaccess będzie wiążący. Musisz "przechwycić" wszystko co przejdzie przez katalog STRONA i coś z tym zrobić, bo inaczej uzna, że ten htaccess zagłębiony tyczy jedynie wyświetlenia bezpośredniego plików i katalogów. Najlepiej stwórz sobie tam jakiś plik php na który przekierujesz te żądania, czyli taki nowy
RewriteRule ^([a-zA-Z-_0-9]+)/?$ index.php?do=$1 [L]

Jeśli nie wierzysz to zrób test... Żądania z roota przekieruj na plik wyświetlający jedynie "Obsłużył mnie główny htaccess", a ten wewnątrz niech kieruje na plik wyświetlający "Obsłużył mnie htaccess w /STRONA" i wal adresy różne. Sama zobaczysz który się będzie wykonywał przy jakiej ścieżce smile.gif
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.