سؤال

أريد توجيه جميع عناوين المواقع التي لا تحتوي على "_js","_css", "_img" ، وما إلى ذلك ، إلى الإرسال النصي.بطريقة أو بأخرى أنها لا تعمل.فعلى سبيل المثال ، جميع الملفات داخل بلدي /_js/ مجلد غير ممكن (بمعنى:يتم إرسالها إلى index.php بدلا من الحصول على المادية الملفات الموجودة في هذا المجلد).

هنا هو بلدي htaccess:

IndexIgnore *
Options +FollowSymLinks
RewriteEngine on

# if the following conditions are met, SKIP the rewriteRules.

RewriteCond %{REQUEST_URI} ^/(_admin/¦_css/¦_js/¦_img/)
RewriteRule . - [S=9]


# Externally redirect to add missing trailing slash
RewriteRule ^(([a-z0-9._\-]+/)*[a-z0-9_\-]+)$ http://%{HTTP_HOST}/$1/?%{QUERY_STRING} [NC,R,L]

# SIX PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5&title=$6&%{QUERY_STRING} [NC,L]

# FIVE  PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5&%{QUERY_STRING} [NC,L]

# FOUR PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&%{QUERY_STRING} [NC,L]

# THREE PARAMS : projects/touch/texts/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&%{QUERY_STRING} [NC,L]

# TWO PARAMS: downloads
RewriteRule ^downloads/([^/]+)/$ index.php?section=downloads&item=$1&%{QUERY_STRING}  [NC,L]

# TWO PARAMS:
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&%{QUERY_STRING} [NC,L]

# TAG URL : index.php?tag=space%2C+navigable+music#5
RewriteRule ^tag/([a-z0-9_\-]+)/$ index.php?tag=$1&%{QUERY_STRING} [NC,L]
# ONE PARAM
RewriteRule ^([a-z0-9_\-]+)/$ index.php?section=$1&%{QUERY_STRING} [NC,L]

تحرير:

ملاحظة بلدي بنية المجلد.يمكن أن تكون المشكلة من المصدر ؟

لدي "v1" و "v2" بنية المجلد.هذا .هتكس يجلس في "v2" مجلد.مستوى واحد أعلاه ، لدي .هتكس توجيه جميع الطلبات إلى "v2".

root 
  L.htaccess << dispatch between v1 and v2 folders 
  L v1 L v2 L.htaccess << the .htaccess code posted above 
  L _admin L all my website files & folders
هل كانت مفيدة؟

المحلول

أنت باستخدام حرف خطأ، ¦ (<م> شريط كسر ، U + 00A6) بدلا من | (<م> خط عمودي ، U + 007C)، ونمط خاطئ ل REQUEST_URI.

RewriteCond %{REQUEST_URI} ^/v2/(_admin/|_css/|_js/|_img/)
RewriteRule . - [S=9]

وأو لملف .htaccess في حياتك <م> V2 دليل فقط:

RewriteRule ^_(admin|css|js|img)/ - [S=9]

نصائح أخرى

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

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

ولكن عليك أن تضع هذا في الخادم الرئيسي التكوين.

وقال مشكلتين رئيسيتين:

  • عدم استخدام جهاز الإحصاء العلم (الموضوع)
  • الإفراط في استخدام الخطوط المائلة (ربما ذات الصلة في المشكلة الفعلية ، انظر الإصدار الجديد من تخطي القاعدة)

هنا يذهب تعديل الملف

IndexIgnore *
Options +FollowSymLinks
RewriteEngine on

# if the following conditions are met, SKIP the rewriteRules.

RewriteCond %{REQUEST_URI} ^(_admin¦_css¦_js¦_img)
RewriteRule . - [L]


# Externally redirect to add missing trailing slash. Not really needed, AFAICS
# RewriteRule ^(([^/]+/)*[^/]+)$ http://%{HTTP_HOST}/$1/ [NC,R,L,QSA]

# SIX PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5&title=$6 [NC,L,QSA]

# FIVE  PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4&id=$5 [NC,L,QSA]

# FOUR PARAMS
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3&content=$4 [NC,L,QSA]

# THREE PARAMS : projects/touch/texts/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2&menu=$3 [NC,L,QSA]

# TWO PARAMS: downloads
RewriteRule ^downloads/([^/]+)/?$ index.php?section=downloads&item=$1  [NC,L,QSA]

# TWO PARAMS:
RewriteRule ^([^/]+)/([^/]+)/?$ /index.php?section=$1&item=$2 [NC,L,QSA]

# TAG URL : index.php?tag=space%2C+navigable+music#5
RewriteRule ^tag/([^/]+)/?$ index.php?tag=$1 [NC,L,QSA]
# ONE PARAM
RewriteRule ^([^/]+)/?$ index.php?section=$1 [NC,L,QSA]

تحرير:بالنظر إلى بنية المجلد وأوضح حاول إضافة إلى v2 .htaccess في بداية التالية:

RewriteBase /

لم توضح إذا كان يمكن أو لا يمكن استخدام RewriteLog (أفترض أنك لا تستطيع)

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