سؤال

لدي مشكلة إعادة توجيه mod_rewrite لا يمكنني اكتشافها.

يتم إعادة كتابة جميع الطلبات من مجال معين "بصمت" إلى دليل فرعي محدد. على سبيل المثال www.mydomain.net/hello.html يسترجع الملف في /net/hello.html. ما يلي. htaccess (وضعت في جذر الاستضافة) يحقق هذا بشكل مثالي:

RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200 # <-- i will need this later. read to the end of the post.
RewriteRule .* - [L]
rewriteCond %{HTTP_HOST} ^www.mydomain.net$
rewriteCond %{REQUEST_URI} !^/net.*$
rewriteRule (.*) /net/$1 [L]

ومع ذلك ، فإن عناوين URL المباشرة في هذا الدليل يجب أن تعيد توجيهها بشكل واضح مع 301 إلى عنوان URL بدون هذا الدليل الفرعي. على سبيل المثال www.mydomain.net/net/hello.html يجب إعادة توجيه إلى www.mydomain.net/hello.html (الذي لا يزال يسترجع الملف فيه /net/hello.html). ملف .htacces الخاص بي لهذا (وضعت في /net) للأسف لا يعمل:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]    

أحصل على حلقة إعادة توجيه غير محدودة على الرغم من RewriteCond %{ENV:REDIRECT_STATUS} 200 حظر في ملف .htaccess الجذر ... فما الخطأ؟

راجع للشغل ، لا بد لي من استخدام mod_rewrite ، لأن الموقع مستضاف خارجي وليس لدي أي إمكانية الوصول إلى تكوينات Apache.

شكرا جزيلا على أي مؤشرات.

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

المحلول

فحص خط طلب HTTP في الطلب في حين أن:

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top