2015-04-08 7 views
5

Mam do czynienia z problemem z htaccess, chcę napisać warunek, który uniemożliwi podany plik.Jak napisać warunek przepisywania dla request_filename inny niż podany

Jeśli żądana nazwa pliku istnieje, po prostu służyć więc mam to:

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule .? - [L] 

ale jak mogę achive że jeden określony plik nie będzie służył? Mam tę ścieżkę używaną do działania kontrolera. więc na przykład example/do_something.php jest ścieżką do pliku do_something.php, ale jest także ścieżką do mojej akcji kontrolera i chcę, aby mój plik htaccess wyświetlał tę akcję zamiast tego pliku, ale tylko to.

Odpowiedz

0

Próbowałem jak anubhava powiedział w swoim answer

RewriteRule ^do_something\.php$ - [L,NC] 

i nie zrobił pracował dla mnie, ale udało mi się go rozwiązać poprzez skierowanie w tym pliki do mojego kontrolera frontowego:

RewriteRule ^example/(.+)\.php$ %{ENV:BASE}/app.php [L] 

więc w tym Jeśli ktoś wejdzie na ścieżkę, plik nie zostanie dostarczony, a żądanie zostanie wysłane przez kontroler główny.

Pełny przykład:

# If the requested filename exists 
# And my route path for controller action is the same 
# Don't serve file serve action 
RewriteRule ^example/(.+)\.php$ %{ENV:BASE}/app.php [L] 

# If the requested filename exists, simply serve it. 
# We only want to let Apache serve files and not directories. 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule .? - [L] 

# Rewrite all other queries to the front controller. 
RewriteRule .? %{ENV:BASE}/app.php [L] 
0

można po prostu użyć tej reguły:

RewriteRule ^example/do_something\.php$ - [L,NC] 

To będzie pominąć do_something.php od wszystkich reguł poniżej tej reguły.

+0

więc po prostu dodaję to po wariancie przepisywania dla wszystkich reguł poniżej tego warunku tak? – Vardius

+0

Przepraszam, że tego nie dostałem. Co próbujesz zrobić z tą zasadą? Czy możesz wyjaśnić z kilkoma przykładami. Również lepiej umieścić pełne. Htaccess w pytaniu – anubhava

+0

thx o pomoc, ale to nie zadziałało, jeśli chcesz wiedzieć, jak sobie z tym poradzę, sprawdź moją odpowiedź – Vardius

Powiązane problemy