سؤال

أنا أكتب بعض القواعد الخاصة بي لعدد قليل من نصوص PHP التي أكتبها، على الرغم من أن لدي خبرة قليلة في التعبير العادي.ملحوظة:قليل.

أريد بشكل أساسي تمرير جميع عناوين URL باستثناء عدد قليل منها كوسيطات إلى ملف Index.php، وإعادة كتابة معظم عناوين URL المحددة على أنها ارتباطات ثابتة في قاعدة البيانات.

أي:/admin، /config، /images، /lib و/template موجود، لكنني لا أريد إعادة كتابته.لكن كل شيء آخر، أريد تمريره كوسائط إلى ملف Index.php.

أفعل هذا حاليًا مع:

url.rewrite-once = (
    "^/(.*)$" => "/index.php?$1"
)

والذي يعمل بشكل جميل مع الارتباطات الثابتة لقاعدة البيانات، ولكنه يعيد أيضًا توجيه المجلدات المذكورة أعلاه.تحتوي هذه الملفات على ملفات يلزم الوصول إليها مباشرة، لكن لا يمكنني العثور على أي مكان يصف كيفية استبعاد السلاسل من المطابقة.

بمجرد أن أعرف كيفية القيام بذلك، يمكنني معرفة الباقي، لكن كوني جديدًا في التعبير العادي، لا أعرف من أين أبدأ.

أي مساعدة سيكون موضع تقدير كبير.

يحرر:لقد أعطيت هذه اللقطة منذ ذلك الحين:

"^/(index\.php|admin|config|images|lib|template)" => "$0",

حيث يبلغ FF عن عملية إعادة توجيه لا نهاية لها لتلك المجلدات؛

"^/(?!(admin|config|images|lib|template))(.*)$" => "$0"

لا يطابق كل شيء ما عدا المجلدات؛

"^/([^(admin|config|images|lib|template)]*)$" => "/index.php?$1"

مرة أخرى، لا يعيد كتابة أي شيء؛

"^/(.*)$" => "/index.php?$1"

يعيد كتابة كل شيء، بما في ذلك المجلدات التي لا أريد إعادة كتابتها.

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

المحلول

يبدو أنني قد حققت ما كنت أبحث عنه بالتعبير التالي:

"^/(?!(index\.php|admin|config|images|lib|template)).*$" => "/index.php?$0"

ثم أنا فقط

trim( $_SERVER['argv'] ,"/")

في ملف Index.php للحصول على سبيكة.

نصائح أخرى

جرب هذا:

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0",
    "^/(.*)$" => "/index.php?$1"
)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top