.htaccess URL إعادة الكتابة إلى الدليل الفرعي
-
21-08-2019 - |
سؤال
ما هي أفضل طريقة لإعادة كتابة أي شيء أدناه "/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 /
تعيين في مكان ما.