سؤال

ولدي URL إعادة كتابة التالية:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs 
RewriteRule ^(.*)$ index.php?page=$1 [PT,L]

والآن أريد أن أضيف استثناء، أنه إذا كان URL هو شيء من هذا القبيل mysite.com/abc ينبغي أن تجاهله وكل شيء داخله أيضا. كما ينبغي أن تستبعد mysite.com/abc/dfgs من هذا إعادة كتابة.

وكيف يمكنني تحقيق ذلك؟

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

المحلول

إذا / اي بي سي هو دليل موجود، يمكنك وضع ملف .htaccess آخر هناك مع

RewriteEngine Off  

إذا كان حقا مجرد سلسلة واحدة تريد ليس كتابة (سواء كان موجودا أم لا)

RewriteCond %{REQUEST_URI} !^/abc  

ولن كتابة إذا يبدأ المسار المطلوب مع "/ اي بي سي"

لاختبار قواعد إعادة الكتابة دون لخبطة الموقع لمتصفحات العادية (وليس التي يجب أن تكون التحرير في بيئة حية وبطبيعة الحال، وهذا هو محض :-) افتراضية)، لقد وجدت ما يلي مفيدة جدا:

RewriteCond %{REMOTE_ADDR} 12.34.56.78 # <-- where that's your IP address  

نصائح أخرى

وهذا يجب تجنب إعادة كتابة إذا كان URI يحتوي على اي بي سي. هذا قد يكون أو لا يكون بالضبط ما تريد. إذا لم يتم تعديل سؤالك.

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#Rewrite ONLY if the REQUEST does NOT contain abc
RewriteCond %{REQUEST_URI} !abc

# Rewrite all other URLs 
RewriteRule ^(.*)$ index.php?page=$1 [PT,L]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top