سؤال

ما هي أفضل طريقة لإعادة كتابة أي شيء أدناه "/some/subdir" إلى "/some/subdir/projects" مثل هذا:

http://www.mydomain.com/some/subidr/test/

...الى هذا:

http://www.mydomain.com/some/subdir/projects/test/

لقد وجدت ال سؤال مماثل تم النشر، ولكن يبدو أن الحل لا يعمل في حالتي.محاولتي الحالية حتى الآن (والتي يبدو أنها لا تنجح):

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/projects/.*$
RewriteRule ^(.*)$ /projects/$1 [L]

يحرر: لقد نسيت أن أذكر أن ملف .htaccess يجب أن يكون موجودًا داخل /some/subdir لأنني لا أملك حق الوصول للكتابة إلى جذر الويب الخاص بالخادم.

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

المحلول

هذا هو الحل الذي وصلت إليه أخيرًا:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/some/subdir/projects/.*$
RewriteRule ^(.*)$ /some/subdir/projects/$1 [L]

نصائح أخرى

جرب هذه القاعدة في ملف التكوين htaccess الخاص بك في جذر المستند لخادمك:

RewriteEngine on
RewriteRule !^some/subdir/projects(/|$) some/subdir/projects%{REQUEST_URI} [L]

كما تريد استخدام هذه القاعدة في الخاص بك /some/subdir/ الدليل، قم بتغيير القاعدة كما يلي:

RewriteRule !^projects(/|$) projects%{REQUEST_URI} [L]

وإذا كنت ترغب في إعادة توجيه أي طلبات /some/subdir/projects/foobar ل /some/subdir/foobar, ، ضع هذه القاعدة فوق ما سبق ذكره:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /some/subdir/projects[/?\s]
RewriteRule ^some/subdir/projects/?([^/].+)?$ /some/subdir/$1 [L,R=301]

سأستخدم هذا:

RewriteEngine On
RewriteRule ^(/some/subdir)/(.*)$ $1/projects/$2

سيتم إعادة توجيه هذا /some/subdir/<anything> ل /some/subdir/projects/<anything>.

لاحظ أن الرائدة / مطلوب في الواقع أن يتطابق مع بداية عنوان URL، إلا إذا لديك RewriteBase / تعيين في مكان ما.

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