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