لماذا تستخدم مرشح إعادة كتابة عنوان URL في الربيع؟
-
01-10-2019 - |
سؤال
تطبيق الربيع الذي أستخدمه يعلن أ توكي مرشح urlrewrite ثم إعداد قاعدة إعادة كتابة كما يلي:
<rule>
<from>^/(.*)$</from>
<to last="true">/app/$1</to>
</rule>
لماذا فعل هذا؟
لن يتمكن الربيع من التعرف على الطلبات التي لا تذهب إلى /app/
عنوان URL؟
وإلا ما هي ميزة هذا إعادة التوجيه؟
المحلول
تخيل أنك تريد Spring MVC's DispatcherServlet
للتعامل مع جميع عناوين URL في التطبيق الخاص بك باستثناء عناوين URL للمحتوى الثابت. إذا حاولت القيام بذلك مباشرة مع <url-pattern>/</url-pattern>
, ، هذا التعيين سوف يكون له الأسبقية على المحتوى الثابت.
مع مرشح إعادة الكتابة ، يمكنك تحديد استثناءات للمحتوى الثابت ، مثل هذا:
<urlrewrite default-match-type="wildcard">
<rule>
<from>/staticContentHere/**</from>
<to>/staticContentHere/$1</to>
</rule>
<rule>
<from>/**</from>
<to>/app/$1</to>
</rule>
</urlrewrite>
تعديل:لاحظ أنه منذ ربيع 3.0.4 هناك أ <mvc:resources />
إعلان. مع هذا الإعلان ، DispatcherServlet
سوف يقدم محتوى ثابت من /resources
المجلد الفرعي لـ WebApp ، لذا لن تكون هناك حاجة لإعادة الكتابة (انظر http://blog.springsource.com/2010/07/22/spring-mvc-3-showcase/).