Как я могу заставить обработку.../ 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]
Вам может не понадобиться два RewriteCond
s. Они просто проверяют, что исходный URL не существует как фактический файл в системе, перед тем как переписать этот URL.