htaccess mod_rewrite
RewriteEngine On
RewriteBase /some/
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?page=$1&cat=$2&id=$3 [L,QSA]
т.е. index.php все переменные GET переваривает.
но например если вводишь /some/xxx.ru/monkey/ (хочешь передать только ?page например, без остальных cat,id ..) оно уже не работает.
как сделать чтобы правило работало, если даже не хватает хотя бы 1 параметра в URL ??
или учить reg-exp'ы, и учиться использовать ?/*/{0,1} и прочее )
но например если вводишь /some/xxx.ru/monkey/ (хочешь передать только ?page например, без остальных cat,id ..) оно уже не работает.
Так конечно оно не будет работать, у тебя же жёстко прописаны именно три параметра.
Я бы сделал через сам php-скрипт, то есть передавал бы ему строку, которую он бы сам разбивал на переменные - в php это делается одной строкой, а с mod_rewrite ты замучаешься. Например:
.htaccess для этого выглядит так:
RewriteRule ^/?some/(.*)$ index.php?$1
Либо, если надо именно через mod_rewrite, можно извратиться так:
RewriteRule ^/?some/( ([^/]*) (/ ([^/]*) (/ ([^/]*/?) )? )? )?$ index.php?page=$2&cat=$4&id=$6 [L,QSA]
Пробелы для наглядности. Хотя по-моему так стоит делать в последнюю очередь.
upd:
Тень Пса, опередил :)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
на второй записи ломается типа xx.ru/first/second/third, картинки перестает показывать даже ... ;)
либо пользуй <base href="/" />, либо прописывай полные пути к картинкам, не <img src="images/blah.jpg" />, а <img src="/images/blah.jpg" />
ну и все ссылки ессна.
либо пользуй <base href="/" />, либо прописывай полные пути к картинкам, не <img src="images/blah.jpg" />, а <img src="/images/blah.jpg" />
ну и все ссылки ессна.
а через .htaccess нельзя никак root определить из которого работаю ? rewritebase пробовал тоже чето не работает ...
Ты пойми, что браузер запрашивает именно так, как он видит структуру. То есть, ты в папке /site/www, он её считает корнем, потом он в /site/www/first/second/ - и считает, что и first и second это реальные папки на диске, и просит у сервера картинки ,которые находятся по пути first/second/. Он не знает, что это у тебя такая хитрая структура запросов, да оно ему и не надо.
Поэтому либо используй base href, либо меняй все ссылки на абсолютные (чего обычно надо избегать), либо сделай уникальное имя для папки с картинками, и в .htaccess пропиши правило вролде:
http://www.w3schools.com/TAGS/tag_base.asp
Просто у некоторых товарищей есть очень сильная потребность в изобретении велосипеда третьей ногой...