Как я могу заставить обработку.../ IH /... как PHP-скрипт

У меня есть множество скриптов index.php, использующих SEO-дружественный формат arg, такой как

example.com/path/to/index.php/opt/arg

и хотел бы переписать или заставить обработчик иметь

example.com/path/to/ih/opt/arg

и, таким образом, сократить часть index.php. [Ну, я бы хотел полностью избавиться от этого, но не хочу возвращаться к

example.com/path/to/?opt&arg

формат.] Обычно это должно поддерживаться в любом каталоге на сайте, а не требовать модификации.htaccess, alias или http.conf. Для моего следующего трюка я расширю "ih" для PHP, чтобы также охватить "ip" для Perl, "ir" для Ruby, "iy" для Python и, возможно, другие. [Моя первоначальная мысль была просто "я", но потом я понял, что есть и другие языки, для которых я тоже этого хочу.]

Я пытался играть с MultiViews, но явно не знаю, что я делаю:-) Я много смотрел на mod_rewrite, но просто не вижу, как реализовать что-то подобное. Я быстро взглянул на форсирование обработчика, но 1) я не уверен, что это действительно то, что я имею в виду (и поэтому я заранее прошу прощения за, возможно, использование неправильного термина) и 2) добавил забавную задачу запуска 1.3, где я хост против 2.2 дома:-)

Предложения?

TIA & HAND

:-D

Дэвид Т.Г. http://justpickone.org/davidtg/email/

1 ответ

Решение

Поскольку вы рассматривали возможность использования mod_rewrite, я предполагаю, что вы не против внести одноразовое изменение в .htaccess или же httpd.conf, но просто не хочу делать это для каждого index.php на вашем сайте. (Поправьте меня если я ошибаюсь!)

Попробуй это:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*\/)?ih(\/.*)?$ $1index.php$2 [L,QSA]

Вам может не понадобиться два RewriteConds. Они просто проверяют, что исходный URL не существует как фактический файл в системе, перед тем как переписать этот URL.

Другие вопросы по тегам