it-swarm.asia

كيف يمكنني تطبيق إعادة كتابة URL في ملف htaccess الخاص بي؟

أرغب في إعادة كتابة عنوان URL (لماذا؟ راجع هذا السؤال .) بحيث بدلاً من أن يرى المستخدمون عناوين مثل

labouseur.com/course-compilers.html 

يمكنهم بدلا من ذلك رؤية واستخدام ببساطة

labouseur.com/course-compilers

(أفضل من ذلك ، ربما ينبغي عليّ إعادة هيكلة ذلك بحيث تكون المقررات/المترجمات).

أنا أستخدم خدمة استضافة مشتركة تستند إلى Linux لموقعي على الويب ، لذلك ليس لدي سيطرة إدارية على الخادم ، لكن لدي سيطرة على .htaccess. تبدو المراجع التي قرأتها عبر الإنترنت أقل وضوحًا بالنسبة لي ، لذلك أبحث عن القليل من الوضوح والمشورة هنا.

17
Alan

يمكنك بالفعل إزالة .html من الملفات الموجودة على الخادم الخاص بك وتعيين الإعدادات في htaccess بحيث يتم تقديمها كملفات html ، ولكن ربما لا يكون هذا ما تبحث عنه.

افعل هذا :

RewriteEngine on
# Check this condition to ensure that it's not a directory.
RewriteCond %{REQUEST_FILENAME} !-d
# Check this condition to ensure that there's a file there
RewriteCond %{REQUEST_FILENAME}\.html -f
# Replace html with your file extension, eg: php, htm, asp
RewriteRule ^(.*)$ $1.html
13
Rizwan Kassim

أولاً ، تأكد من امتلاك Apache للوحدة النمطية وأنه مسموح به في ملفات htacces ، ثم أضف:

RewriteEngine on

# Rewrite rules
RewriteRule ^/myoldsubfolder/(.*) /newfolder/$1 

المثال الخاص بك سيتطلب

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI}\.html -f
RewriteRule ^/(([a-zA-Z0-9_]+)/?)$ /$1.html

للحصول على بنية دليل مستوى واحد و

RewriteRule ^/(([a-zA-Z0-9_]+)/?)+$ /$1.html

للحصول على هيكل متعدد المستويات.

لكن كن حذرا

إذا كان لديك الهيكل

/site/.htaccess
/site/subfolder/.htaccess
/site/subfolder/cats/.htaccess

ستكون قواعد إعادة الكتابة في الملفات التابعة .htaccess متعلقة بالمجلد الأصلي ويمكنك الدخول في بعض المواقف messy rewrite loop. تأكد من استخدام RewriteCond لمنع حدوث ذلك إذا استطعت!

3
Aiden Bell

بالإضافة إلى الإجابات أعلاه يمكن للمرء استخدامها

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^([\w-]+)$ $1.html [L]

([\w-]+) يسمح للأحرف والأرقام باستخدام واصلة (-).

(.*) سوف تعيد كتابة كل طلب بغض النظر ، مما قد يؤدي إلى عجز في القواعد التالية التي تسبب خطأ خادم داخلي في الوصول.

2
Abhishek Gurjar

ليس لديك لاستخدام ملف htaccess لإنجاز هذا. ما عليك سوى هيكلة ملفاتك إلى أدلة ، وبدلاً من استخدام "labouseur.com/course-compilers.html" ، ما عليك سوى تسمية index.html للملف ووضعه في دليل باسم "compilers compilers". ثم عندما تشير إلى هذا الدليل ، يتم تقديم الفهرس افتراضيًا ولكن لن يتم عرضه في عنوان URL. لذلك يمكنك فقط كتابة روابطك كـ "labourseur.com/course-compilers" وسيكون كل شيء على ما يرام.

لا. htaccess المطلوبة.

1
Joel Glovier