Я пытаюсь отобразить мои переменные get как плоские ссылки. Хотите изменить это:
http://mydomain.com/index.php?page=shop&var1=hat&var2=10
в
http://mydomain.com/index.php/shop/hat/10
Имейте в виду, что нет фиксированного количества переменных, поэтому я использую var1, var2, … и т. Д.
[edit] У меня уже есть частично рабочий скрипт, но работает только с max 3 переменными
RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [L] RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L] RewriteRule ^([^/\.]+)/?([^/\.]+)/?$ index.php?page=$1&var=$2 [L] RewriteRule ^([^/\.]+)/?([^/\.]+)/?([^/\.]+)/?$ index.php?page=$1&var=$2&var2=$3 [L] RewriteRule ^([^/\.]+)/?([^/\.]+)/?([^/\.]+)/?$ index.php?page=$1&var=$2&var2=$3&var3=$4 [L]
Итак, сначала помните, что mod_rewrite работает следующим образом:
http://mydomain.com/index.php/shop/hat/10
(тип клиента) переписывается на
http://mydomain.com/index.php?page=shop&var1=hat&var2=10
(то, что клиент обслуживается), но не обязательно отображается как последний. (Если вы не сделаете его перенаправлением)
Итак, предполагая, что ваш формат полностью описан здесь:
RewriteRule ^index\.php/([^/]+)/([^/]+)/([0-9]+)$ /index.php?page=$1&var2=$2&var2=$3
Должно быть хорошо.
РЕДАКТИРОВАТЬ:
О, БТВ! Я не учитывал переменное число переменных. Думаю, это не должно обрабатываться mod_rewrite. Возможно, лучший снимок – RewriteRule index.php/(.*) /index.php?call=$1
а затем используйте ваш скрипт для взрыва с использованием / разделителем.
Вы можете сделать это только в том случае, если уже знаете число переменных только AFAIK.
Вы можете просто направлять весь запрос непосредственно на index.php (называемый bootstrapping), и пусть сценарий анализирует переменные.
Вот как это делается с Zend Framework , вы должны взглянуть на него. ZF также имеет множество других полезных свойств, которые вы могли бы использовать.
Это мой блок перезаписи с одного из моих vhosts с веб-сайтом с ZF.
RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-s RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/favicon.ico RewriteRule ^.*$ index.php [NC,L]