Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: rewrite rule
Forum PHP.pl > Forum > Serwery WWW > Apache
topgun777
Czesc
Mam taki problem otórz robie sobie aplikacje typu cms i na frameworku o strukturze MVC i mam zgryz z czyms takim jak poniżej:

CODE
RewriteEngine On
RewriteBase /cms/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#odwolanie się do kontrolera wczytującego stronę CMS'a:
RewriteRule ^(.*)$ index.php/cms/index/$1 [L]

#admin panel:
RewriteRule ^admin/(.*)$ index.php/admin/$1 [L]


chodzi mi o to ze jak dokonuje się dowolnego wpisu adres_strony/jakas nazwa
to "jakas nazwa" ma kierować do kontorlera cms i akcji index i przekazac tam parametr "jakas nazwa" i to działa dobrze
ale jeszcze chce miec panel administratora i chce zrobic drugie rule na to ze jak ktos wpisze adres_strony/admin/akcja to zeby go kierowało do "akcja" w kontrolerze admin.

Ogolnie to chodzi o to zeby z pierwszej rule wykluczyć "admin" i zeby dla "admin" działało drugie rule i nie wiem jak to zrobic czy ma ktoś pomysłquestionmark.gif

Sprawa jest pilna:|

z góry dzięki za pomoc
planet
Spróbuj to:
CODE

#admin panel:
RewriteRule ^admin/(.*)$ index.php/admin/$1 [L]


Zamienić na to:

CODE

#admin panel:
RewriteRule admin/(.*)$ index.php/admin/$1 [L]
topgun777
juz próbowałem takie cos nie działało zrobiłem to inczej i działa puki co, jest teraz tak ze mam poprostu katalog admin
w katalogu tym jest kolejny htaccess i nowa aplikacja takze wieć wszystko inne niż /admin jest obsługiwane przez pierwszą aplikacje
a "/admin" jest obsługiwane przez ta nową aplikację. W sumie plus tego taki ze mam niezależne z pozoru aplikacje i moge je niezależnie od siebie rozwijać.
ziqzaq
Spróbuj w ten sposób (tylko lekko dostosuj do swoich potrzeb):
Kod
RewriteEngine On
RewriteBase /cms/

#admin panel:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/?(.*)$ admin.php/$1 [PT,L]

#odwolanie się do kontrolera wczytującego stronę CMS'a:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [PT,L]


~planet
Jeśli się nie mylę to modyfikator L oznacza ostatnią regułę rewrite. Czyli ^(.*)$ spowoduje, że reguła admina (która jest później) się nie wykona (i chyba będzie internal server error).
planet
~ziqzaq rzeczywiście masz racje, parametr [L] przerywa wykonywanie pliku, jeśli ciąg pasuje do wzorca, czyli faktycznie admin/ się nie wykona. być może wystarczy zamienić kolejność wyrażeń - najpierw admin, potem cms.
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.