Próbuję przekierować kilka plików pomocniczych do innego systemu wsparcia, z wyjątkiem plików, które mają folder software_updates
w nich. Oto zasada, którą napisałem.
RewriteRule ^/support/.*(?!software_updates).*$ newurl_location [NC,L,R=301]
to wyklucza /support/software_updates/
ale nie /support/product/software_updates
Próbuję wykluczyć dowolny adres URL, który ma aktualizację oprogramowania w dowolnym miejscu adresu URL po wsparciu.
Odpowiedzi:
0 dla odpowiedzi № 1To powinno wystarczyć.
RewriteRule ^support/(?!.*software_updates).*$ newurl_location [NC,L,R=301]
1 dla odpowiedzi nr 2
Próbować:
RewriteRule ^/support/(?!.*software_updates) newurl_location [NC,L,R=301]
Nie mam pod ręką Apache do przetestowania go, ale powinien działać.
1 dla odpowiedzi nr 3
Przetestowałem to i wierzę, że tego właśnie szukasz (zwróć uwagę na zmiany w /
i .*
)
RewriteRule ^support/(?!.*?software_updates) newurl_location [NC,L,R=301]
Już prawie tam byłeś.
Po pierwsze, nie potrzebujesz inicjału /
Nie chcesz .*(?!software_updates).*
, ponieważ to będzie pasować software_updates
. Dlaczego? Gwiazdka-kropka zjada cały łańcuch, a następnie na końcu masz pewność, że oprogramowanie_updates nie jest następne. I oczywiście to prawda.