Lucrăm la o configurație a dispecerului AEM și încercăm să configuram corect setările noastre ErrorDocument împreună cu regulile de rescriere. Pe scurt - nu este clar dacă ErrorDocument va rula prin regulile de rescriere sau va fi procesat în locul lor.
Avem o configurație cu mai mulți locatari pe dispecer, fiecare vhost normalizând cererile de intrare la calea corectă pe editor. Vedem erorile noastre 404 redirecționate (301'ed) către pagina 404, mai degrabă decât să o afișeze cu un răspuns 404. (Nu vedem deloc un 404 la browser).
Notă secundară: aceasta este o problemă recentă din cauza modificărilor pe care le-am făcut regulilor de rescriere a dispecerului, așa că credem că ErrorDocument este sunt rescrise, dar caută confirmare, deoarece SDLC-ul nostru este cam lent.
<IfModule disp_apache2.c>
DispatcherUseProcessedURL 1
DispatcherPassError 1
</IfModule>
Definiți CONTENT_ROOT /content/tenant
ErrorDocument 404 /content/tenant/404.html
RewriteMap lc int:tolower
# 301 solicitări care vin la rădăcina documentului sau cu .html
RewriteCond %{REQUEST_URI} ^/content/tenant/(.+)\.html$ [NC,OR]
RewriteCond %{REQUEST_URI} ^/content/tenant/(.+) [NC,OR]
RewriteCond %{REQUEST_URI} ^/(.+)\.html$ [NC]
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/${lc:%1} [R=301,QSA,L]
# Acum avem o adresă URL curată, trebuie să o mapăm la rădăcina documentului
RewriteRule ^/(.+)$ ${CONTENT_ROOT}/${lc:$1}.html [L,PT,QSD]
Problema pe care o vedem este că documentul 404 este deja scris în calea corectă. Ar trebui să folosim ErrorDocument 404 /404
în schimb, pentru a preveni 301 regulile de rescriere (cum ar fi mai sus) -- sau ErrorDocument se întâmplă în locul altor reguli?