mod_rewrite

Давно хотел разобраться с апавческим mod_rewrite, чтобы сделать у себя на сайте красивые линки и т.п. Но, поскольку я человек ужасно ленивый и времени свободного мало, то руки не доходили. Сейчас как раз подвернулся один проектик, на котором я ре?ил отработать эту практику.

Сразу скажу — мне влом разбираться с чужим кодом. Я знаю, что в вордпрессе вполне себе нормальная обработка через mod_rewrite, но это ж надо вдумываться, какой кусок конфига отвечает за редирект и всё в этом роде. Посему была поставлена задача-минимум:

  1. Есть индексный файл index.php, который при нормальных условиях виден в строке запроса не будет;
  2. Есть строка запроса наподобие http://somesite.ru/Section/Tag/Subtag/?q=some_query&t=some%20another%20query;
  3. Нужно ту часть строки, которая начинается с Section/…, переправить в качестве параметра вы?еупомянутому файлу index.php;
  4. Нужно при этом не потерять саму строку запроса (т.е. то, что идём после знака вопроса в п. 2.

Почитав апачевый мануал, я при?ёл к выводу, что всё не так уж сложно, но вот ре?ить поначалу задачу никак не получалось — апач редиректил запрос на нужный мне файл index.php, но в качестве параметра ему передавал не нужную мне строку, а имя этого же файла :/ Не буду томить: в итоге всё ре?илось использованием переменной сервера %{REQUEST_FILENAME} вместо %{REQUEST_URI} и подстановкой в правило переименования переменной собственно запроса %{QUERY_STRING}.

Вот как выглядит конечный вариант:

#	@author cryonyx
Options       ExecCGI FollowSymLinks Includes MultiViews

#	Enabling rewriting engine
RewriteEngine on

#	Checking whether requested file exists and if not, this means
#	that redirect is to be performed.
#	Path to requested file is stored in query variable named "sym_path".
#	All the other params are passed as usually.
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule	^(.*)$	index.php\?sym_path=$1&%{QUERY_STRING}	[L]
 CompuTerra Diskette

Views Counter v.0.10 Viewed 11689 times by 1840 viewers

Сказать что-нибудь:

© «Жизнь внутри гения», 2004 и до упора. Блог работает на системе Wordpress