سؤال

ugh .. mod_rewrite يجعلني أشعر بالغباء. أنا فقط لم أفطر ذهني حولها حتى الآن. : /

لدي عنوان URL هذا:

http://example.com/a/name/

... أنني أريد أن أشير هنا:

http://example.com/a/index.php?id=name

...أين name هو ما هو الحصول على مر index.php كما id جدال.

أي شيء حاولت النتائج في 404 أو 500 .. :(

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

المحلول

لبدء تشغيلك:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule ^/?a/([^/]+)/?$ /a/index.php?id=$1 [QSA,L]

إذا لم يعمل برنامج إعادة كتابة واحدة من أجلك، جرب شئ اخر.

تحرير: استبعد index.php حسب اقتراح gumbo

نصائح أخرى

إذا كنت تريد أن تكون مائلة زائدة ليكون اختيارية، فعليك استبعاد الملف الذي تقوم بإعادة كتابة الطلب إليه. وإلا سيكون لديك عودية لانهائية لطيفة.

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/a/index\.php$
RewriteRule ^/a/([^/]+)/?$ /a/index.php?id=$1 [L]

هنا أي طلب يبدأ /a/… لكنه ليس كذلك /a/index.php يتم إعادة كتابتها إلى /a/index.php.

ولكن إذا كانت مائلة زائدة إلزامية، فلا حاجة لاستبعاد ملف الوجهة:

RewriteEngine on
RewriteRule ^/a/([^/]+)/$ /a/index.php?id=$1 [L]

ربما شيء على غرار

RewriteEngine on
RewriteBase /a/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?id=$1 [L,QSA]

سوف تفعل الخدعة.

أقترح عليك إلقاء نظرة على عنوان URL هذا:

http://www.dracos.co.uk/code/apache-rewrite-proitle/

ستعمل الحلول المقدمة، ولكن هناك بعض التحذيرات الموضحة في عنوان URL، وخاصة فيما يتعلق؟ و # في عناوين URL نفسها.

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