Mam następujący przepisany adres URL:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs
RewriteRule ^(.*)$ index.php?page=$1 [PT,L]
Teraz chcę dodać wyjątek, że jeśli adres URL jest podobny do mysite.com/abc, powinien go zignorować i wszystkie elementy w nim również. mysite.com/abc/dfgs również powinno być wyłączone z tego przepisywania.
Jak mogę to zrobić?
Odpowiedzi:
2 dla odpowiedzi № 1Jeśli / abc jest istniejącym katalogiem, możesz umieścić tam inny plik .htaccess
RewriteEngine Off
Jeśli to naprawdę tylko jeden ciąg, którego nie chcesz przepisać (czy istnieje, czy nie)
RewriteCond %{REQUEST_URI} !^/abc
nie będzie przepisywać, jeśli żądana ścieżka zaczyna się od "/ abc"
Aby przetestować reguły przepisywania bez zakłócania działania witrynydla zwykłych przeglądarek (nie, że powinieneś być edytowany w środowisku na żywo oczywiście, to jest czysto hipotetyczne :-)), znalazłem następujące bardzo pomocne:
RewriteCond %{REMOTE_ADDR} 12.34.56.78 # <-- where that"s your IP address
0 dla odpowiedzi nr 2
Powinno to zapobiec przepisywaniu, jeśli identyfikator URI zawiera abc. To może, ale nie musi być dokładnie to, czego chcesz. Jeśli nie jest edytowane twoje pytanie.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Rewrite ONLY if the REQUEST does NOT contain abc
RewriteCond %{REQUEST_URI} !abc
# Rewrite all other URLs
RewriteRule ^(.*)$ index.php?page=$1 [PT,L]