[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ошибка в .htaccess
McLotos
Подскажите почему правило может не срабатывать

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)$ list?l=$1&g=$2 [L,QSA]
RewriteRule ^([a-zA-Z]+)$ list?l=$1 [L,QSA]
Этот фрагмент работает идеально

RewriteRule ^([a-zA-Z]+)$ edit?c=$1 [L,QSA]

а вот этот не срабатывает, т.е. если адрес имеет вид site/edit?c=settings тогда страница открывается, а когда меняю ссылку на site/settings тогда выдаётся собщение что я зашёл без параметра, почему?



Спустя 1 час, 7 минут, 29 секунд (29.12.2011 - 11:23) McLotos написал(а):
Нашёл в чем причина, в списке RewriteRule первыми стоят правила, которые относятся к List, а после них правила относящиеся к Edit, поэтому когда идёт обработка адреса, он сверяет их с адресами List, а до Edit не доходит, почему?
Что можно сделать?

Спустя 50 минут, 16 секунд (29.12.2011 - 12:13) McLotos написал(а):
Вот полный код .htaccess
AddDefaultCharset UTF-8 
Options -Indexes
ErrorDocument 400 /system/error/badrequest.php
ErrorDocument 401 /system/error/authreqd.php
ErrorDocument 403 /system/error/forbid.php
ErrorDocument 404 /system/error/notfound.php
ErrorDocument 500 /system/error/serverr.php


AddType img/x-icon .ico


php_value display_errors 1
php_value display_startup_errors 1
php_value session.gc_maxlifetime 300

php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)$ list?l=$1&g=$2 [L,QSA]
RewriteRule ^([a-zA-Z]+)$ list?l=$1 [L,QSA]
RewriteRule ^([a-zA-Z]+)$ edit?c=$1 [L,QSA]
<FilesMatch "\.(htm|html|css|js)$">
AddDefaultCharset UTF-8
</FilesMatch>

Спустя 1 час, 31 минута, 17 секунд (29.12.2011 - 13:44) killer8080 написал(а):
Цитата (McLotos @ 29.12.2011 - 10:23)
поэтому когда идёт обработка адреса, он сверяет их с адресами List, а до Edit не доходит, почему?

А с чего бы ему туда доходить? Если условие одно и то же для обоих правил, и стоит флаг L biggrin.gif

Спустя 50 минут, 23 секунды (29.12.2011 - 14:34) McLotos написал(а):
А что нужнго сделать чтобы заработало?
Просто везде даётся только по одному примеру, но нигде не объясняют как нужно сделать, если у меня к примеру несколько разных файлов и несколько разных типов запросов.
Ну вот как меня в файле, List может обрабатывать от 1 до 3х разных параметров
есть ещё page, edit, и куча других, каждый из которых тоже обрабатывает разное колличество данных.

Спустя 1 минута, 29 секунд (29.12.2011 - 14:36) McLotos написал(а):
и вообще есть какоие-то мануалы чтобы понять как это всё работает, читал на irbis, но что-то там не очень подробно описано, или я уже совсем тугой.

Спустя 30 минут, 42 секунды (29.12.2011 - 15:07) killer8080 написал(а):
McLotos
на ирбисе все достаточно подробно расписано. Почитай раздел ЧПУ.
Цитата (McLotos @ 29.12.2011 - 13:34)
Просто везде даётся только по одному примеру, но нигде не объясняют как нужно сделать, если у меня к примеру несколько разных файлов и несколько разных типов запросов.

Вот поэтому и делают общую точку входа, чтоб не парится с правилами под каждый запрос
RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?route=$1 [L]

в index.php делается роутер, который разбирает запрос и определяет какой контроллер подключить.


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.