Best Practice: .htaccess vs Tomcat's rewrite.config ?
Hvad er "best practice" for placering af rewrite rules i et Tomcat miljø? Hvad er fordele/ulemper ved de to muligheder (.htaccess vs Tomcat's rewrite.config)?
Indtil nu har jeg følgende betragtninger: 1) Så vidt jeg kan se, er der reglerne næsten men ikke 100% identiske. 2) Der er flere tutorials for .htaccess 3) Tomcat skal ikke restartes, når man ændrer i .htaccess
Så i øjeblikket hælder jeg mest til .htaccess. På den anden side har man vel lavet rewrite.config i Tomcat af en god grund.
Hvilken løsning har I valgt, og hvorfor? Alle kommentarer er velkomne.
vil så vidt jeg ved bruge .htaccess for URL som ikke forwardes til Tomcat og Tomcat rewrite for URL som forwardes til Tomcat. Og at have samme directory served af både httpd og Tomcat er en uacceptabel sikkerhedsrisiko.
Det er almindeligt at lave noget URL rewrite for alt der forwardes til Tomcat, men det er en global rewrite ikke en directory .htaccess ting.
Ad #1) Konteksten for mit spørgsmål er rewrite af URL'er
Ifølge supportafdelingen på mit webhotel gælder følgende regler for Tomcat: "Proxy rules take precedence so in case root URL '/' is proxied there will be no attempt of reading .htaccess" og videre: "you may remove the proxy setting and play with htaccess."
Jeg forstår det således, at enten bruger man Tomcat rewrite eller også bruger man .htaccess.
Hvis man forwarder alt til Tomcat så er der ingen brug af .htaccess. Det passer fint med min forståelse.
Og den løsning og Tomcat rewrite synes at være det sikre valg.
Jeg ved ikke hvilket scenarie de har i tankerne med snakken om at ændre proxy reglen.
Det er åbenlyst at hvis man forwarder /javastuff/* til Tomcat så vil /staticstuff/* ikke blive forwardet og vil fint kunne bruge .htaccess.
Det er også åbenlyst at hvis man forwarder /*.jsp til Tomcat så vil /*.html ikke blive forwardet til Tomcat og vil fint kunne bruge .htaccess.
Men hvis Tomcat træ og det der serves af httpd ikke overlapper i directory struktiur, så er det jo ikke specielt interessant: - Java stuff rewrites via Tomcat - static stuff rewrites via .htaccess men medmindre du har specielle behov (f.eks. meget store filer til download) så kan jeg ikke se nogen fordel ved den løsning fremfor at forwarde alt til Tomcat og bruge Tomcat rewrite.
Hvis Tomcat træ og det der serves af httpd overlapper i directory struktur, så er det muligt at man kan få .htaccess til at virke med Tomcat URL - jeg ved det ikke, men hvis /foobar har en .htaccess og /*.jsp forwardes til Tomcat, så er det muligt at Apache for /foobar/bla.jsp vil checke /foobar .htaccess inden der forwardes til Tomcat. Men det er efter min mening uinteressant - jeg vil kraftigt fraråde et sådant setup. Store potentielle sikkerhedsproblemer. Tomcat og httpd har forskellige konventioner og det kan gå galt hvis de server hinandens filer. Måske vil Tomcat sende indholdet af .htaccess filer til user. Måske vil httpd sende indholdet af /WEB-INF/* til user.
Jeg er ret sikker på det er det rigtige valg for dig at forwarde alt og så bruge Tomcat rewrite. Det er jo tilsyneladende også deres default.
Hvis du har meget store filer til download, så: - Tomcat og de store filer i separate directories - forward /javastuff/* til Tomcat - map /staticstuff/* til de store filers directory - brug Tomcat rewrite for Tomcat - brug .htaccess for de store filer
De statiske filer, jeg har, er i det væsentlige: 1) Billeder 2) CSS'er 3) JavaScript De bliver alle cached af Cloudflare, så de bør ikke udgøre noget problem, selvom de ligger i Tomcats træ.
Men som man siger "Premature optimization is the root of all evil". Jeg ville starte med at lade Tomcat serve dem - og hvis det viser sig at være et performance problem, så prøve om det performer bedre hvis de serves direkte af Apache.
De er hostet af Tomcat og de er cached af Cloudflare. Det har de været i mange år, og det fungerer fint.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.