Доброго всем времени суток! сейчас у меня работает ЧПУ при помощи htaccess, с содержимым Код (Text): RewriteRule ^([a-zA-Z0-9_-]+).html$ index.php?mod=info&action=index&id=$1 [QSA] RewriteRule ^([a-zA-Z0-9_-]+).htm$ index.php?mod=products&action=open&id=$1 [QSA] RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?mod=products&action=index&cat=$1 [QSA] Как видно из примера ссылки все разные, есть как заканчивающиеся на .html, .htm и просто / в конце - и все они имеют первый уровень и используются для разных модулей. Можно как-либо сделать из моего примера, чтобы все ссылки имели вид link.htm или такое невозможно?[/php]
ну так прописывал - и тогда работает только верхняя ссылка... Затем и обратился сюда чтоб помогли переписать правила
darkgod, если все ссылку будут .htm, то ты получишь три одинаковых правила. Три. Одинаковых. Как mod_rewrite будет их различать? Ты сам-то способен будешь отличить ссылку test.html ведущую ?mod=info от ссылки test.htm ведущую на ?mod=products? Нет? Вот и mod_rewrite не может. upd чё не хочешь уточнение сделать? Код (Text): RewriteRule ^info/([a-zA-Z0-9_-]+).htm$ index.php?mod=info&action=index&id=$1 [QSA,L] RewriteRule ^products/([a-zA-Z0-9_-]+).htm$ index.php?mod=products&action=open&id=$1 [QSA,L] RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?mod=products&action=index&cat=$1 [QSA][/code,L] И получишь ссылки info/test.htm для информации и products/test.htm - для продуктов. P.S. Ключ L останавливает "поиски" других совпадений.
да я бы с удовольствием - в своих проектах так и делаю... Просто есть заказ - перевести статичный сайт на динамические рельсы, НО с сохранением всей структуры и всех ссылок... а там все документы лежат в корне... только вот будут и категории и подкатегории и продукты и информационные страницы... наверно придется выкручиваться таким способом - для всех категорий которые уже есть прописывать ссылку ручками, Код (Text): RewriteRule ^cpucat.htm$ index.php?mod=products&action=index&cat=cpucat [QSA] для продуктов чтоб они делались автоматом по правилу Код (Text): RewriteRule ^([a-zA-Z0-9_-]+).htm$ index.php?mod=products&action=open&id=$1 [QSA]
Код (Text): RewriteRule ^.*$ index.php В index.php роутишь как тебе надо PHP: <?php $urls = array('link/test.html' => array('module' => 'products.php', 'action' => 'index', 'cat' => 'cpucat') ... ); if(array_key_exists($queryString, $urls)) { $app->dispatch($urls[$queryString]); }