لماذا يقوم modRewrite بتطبيق .php التلقائي على هذه القاعدة البسيطة؟

StackOverflow https://stackoverflow.com/questions/600127

  •  03-07-2019
  •  | 
  •  

سؤال

حسنًا يا رفاق، ربما لدي مشكلة غبية، ولكن ربما أكون غبيًا :)

لدي هذا .htaccess البسيط:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule ^news/([^/]+)$               news-inside.php?n=$1 [L]
RewriteRule ^news/?$                  news.php [L]


RewriteCond %{REQUEST_FILENAME} !-f

في كل مرة أحاول الدخول إلى القاعدة الأولى عن طريق كتابة بعض عناوين URL مثل هذه:

http://host/news/something

تتم إعادة توجيهي إلى الملف news.php، وليس إلى news-inside.php باستخدام سلسلة الاستعلام!

بالنظر إلى $_GET و$_SERVER للصفحة التي تم الوصول إليها، هذه هي النتيجة:

$_GET => empty

$_SERVER (some)

  'REQUEST_METHOD' => string 'GET' (length=3)
  'QUERY_STRING' => string '' (length=0)
  'REQUEST_URI' => string '/news/something' (length=15)
  'SCRIPT_NAME' => string '/news.php' (length=9)
  'PATH_INFO' => string '/something' (length=10)
  'PATH_TRANSLATED' => string '/var/www/rolo/something' (length=23)
  'PHP_SELF' => string '/news.php/something' (length=19)

أيه أفكار؟؟

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

المحلول

حاول تعطيل MultiViews:

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