Если ваш mod_rewrite имеет правило, подобное следующему:
RewriteRule ^hello/world /?action=hello&sub=world [NC,L]
или, более обобщенно:
// Assuming only lowercase letters in action & sub..
RewriteRule ^([a-z]+)/([a-z]+) /?action=$1&sub=$2 [NC,L]
затем вызывается тот же PHP-скрипт с переменными $_REQUEST
, доступными для любого доступа пользователя к странице (грязный или чистый URL).
Недавно мы переместили большую часть нашего сайта в чистые URL-адреса (по-прежнему поддерживая более старые, «грязные» URL-адреса) и правила, подобные приведенным выше, означали, что нам не нужно было переписывать код, основанный только на параметрах $_REQUEST
правила mod_rewrite.
Обновление
Mod_rewrite - это модуль Apache, но для IIS также доступен ряд опций .
Какой бы веб-сервер вы не решили поддерживать, подход mod_rewrite, скорее всего, приведет к наименьшему объему работы для вас. Без этого вам, вероятно, придется создать множество файлов, чтобы имитировать структуру ваших чистых URL, например, в корне вашего веб-сервера вы создадите каталог hello
, поместив в него файл world
, содержащий что-то вроде следующего:
// Set the $_REQUEST params to mimic dirty url
$_REQUEST['action'] = 'hello';
$_REQUEST['sub'] = 'world';
// Include existing file so we don't need to re-do our logic
// (assuming index.php at web root)
include('../index.php');
По мере увеличения числа параметров, которые вы хотите обрабатывать «чисто», увеличивается и количество каталогов и файлов-заглушек, которые вам требуются, что значительно увеличит ваши затраты на обслуживание.
mod_rewrite разработан именно для такого рода проблем и теперь поддерживается как в IIS, так и в Apache, поэтому я настоятельно рекомендую идти в этом направлении!