سؤال

لدي تطبيق مؤسسي مكتوب بلغة JAVA باستخدام JSF (باستخدام RichFaces 3.3).يبدو عنوان URL الخاص بي حاليًا كما يلي:

http://localhost/WebApplication/faces/folder1/page.jsp

السؤال هو كيف يمكنني إخفاء عنوان url الخاص بي لجعله مثل هذا:

http://localhost/folder1/page.jps

في الأساس أريد إخفاء "التطبيق/الوجوه/"

شكرًا

هل كانت مفيدة؟

المحلول

لإعادة كتابة عناوين URL داخل التطبيق الخاص بك يمكنك استخدامها إعادة كتابة URL.ومع ذلك، في هذه الحالة، يبدو أنك تريد إزالة مسار سياق تطبيق الويب الخاص بك، وفي هذه الحالة لديك خياران:

  1. نشر التطبيق الخاص بك إلى مسار السياق / (كيف يكون خادم التطبيق خاصًا)
  2. قم بتشغيل Apache على المنفذ 80 واستخدم mod_proxy لتوكيل عناوين URL معينة لخادم التطبيق الخاص بك الذي يعمل على منفذ مختلف، باستخدام التكوين كما يلي.

تكوين أباتشي:

<Proxy http://localhost:8080/*>
    Order Allow,Deny
    Allow From All
</Proxy>

ProxyPreserveHost On
ProxyPass / http://localhost:8080/WebApplication/
ProxyPassReverse / http://localhost:8080/WebApplication/

نصائح أخرى

لاحظ أن /faces/ يرجع إلى التعيين الموجود web.xml.يعد هذا تعيينًا قياسيًا لـ JSF، ولكن يمكنك أيضًا استخدام تعيين الامتداد - على سبيل المثال. .faces في نهاية عنوان URL.

على سبيل المثال، في أحد التطبيقات المتوفرة لدي هنا، يوجد هذا في ملف web.xml:

<servlet-mapping>
    <servlet-name>Persistent Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
</servlet-mapping>

هذا يستخدم IceFaces، ومع ذلك سيكون الأمر مشابهًا بالنسبة لك مع RichFaces.من المحتمل أن يبدو شكلك كما يلي: <url-pattern>/faces/*</url-pattern>.إذا قمت بتغييره لديك *.faces كما هو مذكور أعلاه، سيبدو عنوان URL النهائي بالشكل التالي:

http://localhost/WebApplication/folder1/page.faces

إذا استخدمت ذلك جنبًا إلى جنب مع الإجابة التي قدمها بيتر هيلتون بشأن النشر كتطبيق ويب جذر، فسيبدو عنوان URL النهائي كما يلي:

http://localhost/folder1/page.faces

وهو بالضبط ما أردته تقريبًا.

يتيح لك PrettyFaces إعادة كتابة عنوان URL الخاص بك.إذا كنت تفضل شيئًا أكثر خفيفة الوزن ، فسيتم توسيع نطاق التنقل وتجاوز المسابح ، على سبيل المثالعن طريق استدعاء context.getExternalContext().redirect()

يمكنك أيضًا تغيير اسم المجلد من faces إلى jsp على سبيل المثال مثل هذا:

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/jsp/*</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>
<welcome-file-list>
   <welcome-file>jsp/index.jsp</welcome-file>
</welcome-file-list>

وبعد ذلك سيبدو عنوان URL الخاص بك كما يلي:

http://localhost/WebApplication/jsp/folder1/page.jsp

وإذا قمت بنشر تطبيقك على مسار السياق/لخادم التطبيق، فسيبدو كما يلي:

http://localhost/jsp/folder1/page.jsp

سيكون من الصعب الآن معرفة أنك تستخدم JSF للمتصفحين؛-) ولكن يمكن للمتسلل التحقيق في الأمر عن طريق توجيه متصفحه إلى عنوان url مثل هذا http://localhost/folder1/page.jsp

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top