أعد كتابة اسم مجلد باستخدام .htaccess
سؤال
أنا أتساءل عندما من الممكن استخدامها .htaccess
لإعادة كتابة اسم مجلد. ما أعنيه هو هذا.
دعنا نقول أن لدي عنوان URL مثل:
www.site.com/folder1/page.php
الآن أريد إعادة كتابة عنوان URL إلى (على سبيل المثال)
www.site.com/apple/page.php
Folder1 هو مجلد موجود على WebSpace الخاص بي.
هام: "Apple" ليس مجلدا بدلا من الاسم!
موافق هنا هي خطة خطوة بخطوة:
- أنواع المستخدم
www.site.com/folder1/login.php
- يجب إعادة كتابة عنوان URL وعدم إعادة توجيه عنوان URL
www.site.com/apple/login.php
هذا يعني ذاك apple
هو مجرد اسم وليس دليل. يجب أن يأتي كل الكود فقط من Folder1. يجب أن تكون Apple Acutally مجرد اسم مستعار ل folder1
. وبعد لا أستطيع إعادة تسمية folder1
ل Apple
. وبعد لذلك أود فقط إعادة كتابة folder1
ل apple
.
المحلول
MOD_REWRITE يمكن فقط إعادة كتابة / إعادة توجيه URIS المطلوبة. لذلك سوف تحتاج إلى طلب /apple/…
لإعادة كتابتها إلى المقابلة /folder1/…
.
جرب هذا:
RewriteEngine on
RewriteRule ^apple/(.*) folder1/$1
ستقوم هذه القاعدة بإعادة كتابة كل طلب يبدأ بمسار URI /apple/…
داخليا إلى /folder1/…
.
يحرركما كنت تبحث بالفعل عن الاتجاه الآخر:
RewriteCond %{THE_REQUEST} ^GET\ /folder1/
RewriteRule ^folder1/(.*) /apple/$1 [L,R=301]
تم تصميم هذه القاعدة للعمل مع القاعدة الأخرى أعلاه. طلبات /folder1/…
سيتم إعادة توجيهها خارجيا إلى /apple/…
وطلبات /apple/…
ثم سيتم إعادة كتابتها داخليا /folder1/…
.
نصائح أخرى
يحاول:
RewriteRule ^/apple(.*)?$ /folder1$1 [NC]
عندما يكون المجلد الذي تريد ظهوره في عنوان URL في الجزء الأول من العبارة - هذا هو ما سيتطابق معه والجزء الثاني "أعد كتابة" ذلك إلى مجلدك الحالي. تعني علم [NC] أنه سيتجاهل اختلافات الحالة مثل Apple / ستظل إلى الأمام.
انظر هنا للحصول على برنامج تعليمي: http://www.sitepoint.com/article/guide-url-rewriting/
هناك أيضا أداة مساعدة لطيفة للنوافذ، يمكنك تنزيلها من هنا:http://www.helicontech.com/download/rxtest.zip. فقط لملاحظة لاختبار، تحتاج إلى ترك اسم المجال - لذلك سيكون الاختبار ضد /folder1/login.php
لإعادة توجيه من / Folder1 إلى / Apple، جرب هذا:
RewriteRule ^/folder1(.*)?$ /apple$1 [R]
لإعادة توجيه ثم أعد كتابة مجرد الجمع بين ما ورد أعلاه في ملف HTACCESS:
RewriteRule ^/folder1(.*)?$ /apple$1 [R]
RewriteRule ^/apple(.*)?$ /folder1$1 [NC]