mod_rewrite ومع مسافات في عناوين المواقع
-
03-07-2019 - |
سؤال
وأنا بحاجة إلى إعداد بعض RewriteRules لإعادة توجيه URL الذي يحتوي على مساحة فيه. لقد حاول هذا:
RewriteRule ^article/with%20spaces.html$ /article/without_spaces.html [R=301,L]
... ولكنه لا يعمل. وضع في الفضاء بدلا من 20٪ يؤدي إلى خطأ خادم داخلي 500. كيف أقوم بإضافة الفضاء؟
المحلول
ومحاولة وضع \ أمام الفضاء الخاص بك إلى الخروج منه.
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
نصائح أخرى
ويمكنك الهروب مجرد الفضاء مع \
RewriteRule ^article/with\ spaces.html$ /article/without_spaces.html [R=301,L]
إذا كنت ترغب في تجنب تعقيد الهروب كل الفضاء (على سبيل المثال، إذا كنت تخطط ليكون هذا الملف تم إنشاؤه تلقائيا)، يمكنك ببساطة استخدام علامات الاقتباس:
RewriteRule "^article/with spaces.html$" /article/without_spaces.html [R=301,L]
وعلاوة على ذلك، هذه الأقوال يمكن استخدامها ليغلف أي حجة المتوقع واحد:
RewriteRule "^article/with spaces.html$" "/article/without_spaces.html" [R=301,L]
RewriteRule ^article/with[\ |%2520]spaces.html$ /article/without_spaces.html [R=301,L]
والخيار الأول يستبدل مساحة في حين أن الثانية يستبدل ترميز بجد٪ 20 في عنوان الموقع.
وآه، لقد وجدت الحل: استخدام أسلوب التعابير المنطقية لإظهار الفضاء:
RewriteRule ^article/with\sspaces.html$ ...
ورغم ذلك، وأظن أن هذا من شأنه أن تتطابق مع كل الشخصيات مسافة بيضاء أخرى أيضا (علامات التبويب، الخ)، ولكن لا أعتقد أنها ستكون مشكلة كبيرة.