ЧПУ в массы!

Статус
В этой теме нельзя размещать новые ответы.
Сейчас я не придерживаюсь метода, о котором здесь писал :)

Если приложение довольно большое, то будет и довольно большое количество регулярных выражений для перезаписи УРЛов (в одном таком у меня .htaccess весит 8Kb).

Поэтому сейчас у меня всё проще :smmne:
Код:
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule !\.(js|gz|ico|gif|jpg|png|css)$ index.php 
</IfModule>

а потом в дело вступает Для просмотра ссылки Войди или Зарегистрируйся.

А можно русским языком объяснить для чего это надо...
 
чтобы не писать rewrite rule :) всё централизованно происходит в одном месте и работает по строго определённой схеме
 
вообще есть какая нить офлайновая мануалка для написания .htcasses файлов? чтоб там правила и примеры были? буду признателен, очень нужно
 
ты не поверишь
но гугл и на этот вопрос отвечает исправно

перевод штатного апачевского мануала со всеми примерами
 

Вложения

  • mod_rewrite.zip
    54 KB · Просмотры: 25
Прошу подсказать решение:

Вот код моего .htaccess

RewriteEngine on
RewriteBase /

RewriteRule ^([a-zA-Z0-9-]+).php$ index.php?type=$1
RewriteRule ^([news|objav|reliz]+)([0-9]+).php$ idurl.php?type=$1&idn=$2

ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php

Со вторым правилом все ок, без проблем, по $type и $idn нормально формируется страница, но вот с первым заморочка, не могу понять в чем фокус?
Должно всего-то подменять в УРЛе type. Вот так: index.php?type=maps все работает, а вот так должно: maps.php - но нет, выдает ошибка доступа к файлу. Причем когда смотрю к какому именно, получается, что вместо содержимого type там оказывается имя файла. Тоесть index.
Что я делаю не так?
 
не добавляешь первой строке ключ [L], означающий финиш обработки если сработало правило

[a-zA-Z0-9-]+ означает практически любое слово
даешь ему maps.php, сработал рерайт на index.php?type=maps - а запрашивает-то он обратно файл, попадающий под правило - index.php?maps
вот и идет по второму кругу
 
[L,QSA] - а это что значит?

И все же что-то не то:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.*).php$ index.php?type=$1 [L]
RewriteRule ^([news|objav|reliz]+)([0-9]+).php$ idurl.php?type=$1&idn=$2 [L]

Вот код, первым правило для просто файлов, вторым - для новостей, объявлений и релизов с номерами (по ID в базе). Если первое правило существует, то новости с номерами не работают, почему-то идет по первому. Если их поменять местами, вообще бред. В index передается значение index в любом случае. И сразу верхний набор правил перестает работать, тоесть несмотря на них файл pda.php реально существующий на диске, все равно не работает и попадает под правило ниже.

news|objav|reliz - так правильно
(news)|(objav)|(reliz) - или так?

а то newso10.php - показывает ошибку доступа к базе
а newst10.php - не существует такой файл
тоесть если в имени стоит буква из тех, что в news|objav|reliz то как бы есть такой файл, а не должен.
 
Query String Append - при срабатывании правила добавить после ? GET-параметры, которые шли в оригинале

в [квадратных скобках] указывается диапазон символов -
[news|objav|reliz] все что содержит буквы newsobjavreliz
newso попадает, все буквы есть из квадратных скобок
newst не попадает - буквы t нет

если есть желание искать именно слова - не квадратные скобки надо использовать
 
Вот как раз это то я догадался, но как не пробовал поставить по другому - не выходит. В мануале написано, что надо круглые. Ну так не получается:

RewriteRule ^((news|objav|reliz)+)([0-9]+).php$ idurl.php?type=$1&idn=$2 [L]

По другому тоде никак. Как правильно-то, что бы учитывало только эти слова?

Отвечаю сам:

RewriteRule ^(news|objav|reliz)([0-9]+).php$ idurl.php?type=$1&idn=$2 [L]

Вот атк правильно, если надо что бы не буквы, а слова учитывало.
 
  • Заблокирован
  • #40
Чёрт, в этот ЧПУ давно вкурить не могу. Видимо надо книгу по теме найти и читать.
Вот вопрос, давно интересует. Как мы все знаем, грядёт эпоха:) доменной хоны .рф, так вот по этим правилам можно будет делать ЧПУ на русском? Или как-то по другому? Просто думаю чего начать изучать.
Вообще с .рф столько вопросов, например как движки будут работать, тот же dle.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху