Я бы серьезно пересмотрел перед использованием (или чрезмерным) mod_rewrite.
Почти во всех моих проектах я использую простую переписку модов в .htaccess:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./
AddHandler php5-script .php
Это говорит серверу пересылать все страницы в / (index.php), если файл не существует иным образом.
В корневом каталоге у меня есть папка "views" со всеми страницами, которые я использую. Например. файл, используемый для / home, фактически был бы /views/home.php. Однако в index.php у меня есть скрипт, который анализирует URL-адрес пользователя, проверяет файл и включает его.
$page = substr($_SERVER['REQUEST_URI'], 1);
if(!$page) :
header("Location: /home");
if(file_exists("views/$page.php")) :
include "views/$page.php";
else :
include "views/$page.php";
endif;
Это создает переменную с именем $ page, которая хранит значение всего в URL после имени домена. Я использую функцию substr () в URI запроса, чтобы избавиться от косой черты (/) в URL.
Если переменная пуста, например, если пользователь просто находится в http://example.com или http://example.com/, то он перенаправляет их в / home, где скрипт затем проверяет наличие файла home.php внутри из папки просмотров. Если этот файл существует, он включает его и отображает для пользователя.
Иначе, скрипт будет просто включать страницу 404, сообщающую пользователю, что файл не существует.
Надеюсь, это поможет вам, и если вам понадобятся дальнейшие объяснения, я буду рад помочь!