Камиль
Ё, господа! С хтакесами не селён, подскажите плиз как переделать RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Камиль
мне крч надо не для эво сразу скажу
Камиль
есть несколько файлов php и надо чтобы в каждом обращении к нему с подпапкой на него шёл гет запрос
Камиль
типо есть файл test.php он откроется /test , а если /test/qwr, то это по сути /test?q=qwr
Камиль
только мне бы динамичное правило
Камиль
не хочу копипастом заниматься
Serguei
В RewriteRule после пробела стоит регулярное выражение - символ ^охначает начало строки, $ - конец строки, что между ними - соответствует perl-подобным правилам регулярок. После пробела стоит строка, в которую надо преобазовать то, что подошл. В ней $1, $2 и т.д. - соответстивя для совпадений в скобочках (первые скобки, вторые скобки и т.д.)
Serguei
Флаги L,QSA в конце строки - L означает, что на этой строке нужно прекратить разбирать htaccess, QSA означает, что при редиректе нужно оставить в адресной строке исходный адрес.
Serguei
Сейчас поищу пару примеров похожих, как у меня это сделано.
Serguei
Например, вот пример из сайта еще 2000х годов: RewriteBase / RewriteRule ^(mesta)/([A-Za-z0-9_^/]+)/([A-Za-z0-9_^/]+)/([A-Za-z0-9_^/]+)\.html$ /index.php?content=mesta&lev1=$2&lev2=$3&lev3=$4 [L,QSA] RewriteRule ^(mesta)/([A-Za-z0-9_^/]+)/([A-Za-z0-9_^/]+)\.html$ /index.php?content=mesta&lev1=$2&lev2=$3 [L,QSA] RewriteRule ^(mesta)/([A-Za-z0-9_^/]+)\.html$ /index.php?content=mesta&lev1=$2 [L,QSA] RewriteRule ^(showpicture)/([A-Za-z0-9_^/]+)\.html$ /index.php?content=mesta&showpicture=$2 [L, QSA] Первый RewriteRule означает, что все адреса вида meta/параметр_1/параметр_2/параметр3.html будут редиректиться на страницу /index.php?content=mesta&lev1=параметр_2&lev2=параметр_3&lev3=параметр4.
Камиль
мне надо чтобы самое последжнее праивло не сработало, если все остальные выше отработали
Serguei
Флаг L должен быть у предпоследнего.
Камиль
Камиль
крч к index.html должно быть обращение, если запрос первого уровня
Камиль
и файла нету
Serguei
Еще, (.*) - жадный квантификатор. То есть он может в себя вообще всюстроку загробастать.
Serguei
Как и пустая строка ему тоже соответствует. Чтобы была на пустая, нужно + вместо * указывать.
Камиль
крч удалил последнюю)) RewriteRule ^(.*)/(.*)$ $1.html?q=$2 [L,S,QSA]
Камиль
отработала как надо))
Камиль
крч удалил последнюю)) RewriteRule ^(.*)/(.*)$ $1.html?q=$2 [L,S,QSA]
точнее последнюю удалил, а эту оставил
Serguei
Вместо (.*) попробуйте (.+)
Камиль
Вместо (.*) попробуйте (.+)
ок спасибо за совет
Serguei
* - любое число символов, включая нулевое число, а + - любое число символов, но хотя бы от одного. То есть в .+ не попадет пустая строка.
Serguei
Также я бы попробовал еще и жадность отключить у непоследних параметров, если вы используете точку, а не []. То есть делал бы конструкции вида (.*?) или (.+?), но не (.*)
Oleg
Привет! А подскажите как свои классы подключить как внешний пакет. Мне это нужно, чтобы основные классы были как отдельный пакет. Сделал core/custom/packages/vendorname/packagename/src/Test.class.php где <?php namespace Vendorname\Packagename; class Test { public function __construct() { } public function checkIt() { return 'hello'; } } Затем core/custom/packages/vendorname/packagename/composer.json где: bla bla bla "autoload": { "psr-4": { "Vendorname\\Packagename\\": "src/" } }, bla bla bla Дальше core/custom/composer.json где bla bla bla "autoload": { "psr-4": { "EvolutionCMS\\Main\\": "packages/main/src/", "Vendorname\\Packagename\\": "packages/vendorname/packagename/src/" } } bla bla bla Дальше в контроллере пробую: bla bla bla $t = new Test(); $this->data['test] = $t->checkIt(); bla bla bla Мне выдаёт Class 'EvolutionCMS\Main\Controllers\Test' not found Если же сначала use Vendorname\Packagename\Test; то Class 'Vendorname\Packagename\Test' not found
Serguei
Также я бы попробовал еще и жадность отключить у непоследних параметров, если вы используете точку, а не []. То есть делал бы конструкции вида (.*?) или (.+?), но не (.*)
А лучше даже, наверное - ([^\/]+?)/ . Это будет соответствовать "минимальной последовательности из символов до ближайшего слеша, не являющихся слешом".
Pathologic
https://getcomposer.org/doc/05-repositories.md#path
Камиль
я понимаю что апач не может найти файл по правилам и выбивает ошибку сервера
Камиль
но мне надо чтобы выбивало 500
Камиль
вот что у меня сейчас RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\/]+?)$ $1.html [NC,L,S] RewriteRule ^([^\/]+?)/([^\/]+?)$ $1.html [NC,L,S] RewriteRule (.+)/$ /$1 [L,R=301]
Камиль
если можете и флаги подправить, то буду благодарен :)
Oleg
https://getcomposer.org/doc/05-repositories.md#path
Спасибо, это очень похоже как раз то, что нужно. Как минимум у меня локальный пакет увиделся, установился. Правда вызвать функцию из класса пока не получается.
Serguei
"RewriteRule ^([^\/]+?)$ $1.html [NC,L,S]" - мне вот это не нравится. Это подойдет под любой адрес, не содержащий слеша. И будет редирект на такой же адрес, но с приписыванием к нему .html. Если такой страницы нет, то сервер зпускает обработку 404 ошибки, натыкается сноа на эту конструкцию и сходит с ума.
Serguei
Регулярные выражения всегда проще писать, чем читать, есть такой хитрый изврат ума. То есть если что-то становится непоняным - комментируем его, и пытаемся написать заново, символ за символом. :) Я бы закомментил всё, и оставил только самое первое выражение. Протестировал с таким файлом не только адрес, на который оно рассчитано, но и те, кторые не должны на него попадать - в идеале у первых должен быть правильный редирект, у вторых 404 ошибка. Далее добавляем второе выражение после него (Убедившись, что у предыдущего есть флаг L), и тестируем снова все группы адресов. Я по самим выражениям не могу понять, корректны ли они, так как не понимаю вашей задачи - какие адреса во что вы хотите преобразовать.
Камиль
так же они должны быть роутами
Serguei
Вот смотрите, первое же выражение дает вот такие преобразования, все их нх регулярка пропустит и совершит: 1) stroka_bez_slesha -> stroka_bez_slesha.html stroka_bez_slesha.html -> stroka_bez_slesha.html.html stroka_bez_slesha.html?param=1 -> stroka_bez_slesha.html?param=1.html Это именно так планировалось?
Камиль
т.е. допустим есть файлы main.html, text.html и пути обращения к ним следующие /main, /main/test1, /text, /text/test1
Serguei
Так. Запутслася. main.html у вас реальный файл, а в адресной строке он должен быть доступен как /main, так?
Камиль
волшебный чат
Камиль
Так. Запутслася. main.html у вас реальный файл, а в адресной строке он должен быть доступен как /main, так?
вот так работает как надо. да main реальный файл RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.html [NC,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^\/]+?)/([^\/]+?)$ $1.html [NC,L] RewriteRule (.+)/$ /$1 [L,R=301]
Serguei
RewriteRule ^([^\.]+)$ $1.html [NC,L] так правильней?
Это соответствует любому адресу, не содержащему точки.
Камиль
и так же при обращении по /main/awdwad тоже должно идти всё к main.html
Serguei
Ну вот, а вы переживали. Даже в директивах .htaccess разобрались типа REQUEST_FILENAME -f -d и т.д. , я до этого не дошел пока, втупую адрес регулярками в лоб парсю :)
Serguei
RewriteRule ^([^\/]+?)/([^\/]+?)$ $1.html - а вот тут у вас вторая часть после слеша вообще отбрасывается, она точно не нужна нигде?
Anonymous
Вопрос. Подскажите решение, которое позволить реализовать такую штуку как отображение элементов вывода колонками или строками
Мирослав
Здравия, Evolution CMS 3.1.5 установка по умолчанию, управление пакетами 0.1.3 не находит ACE. Нужно подключить другой репозиторий?
Oleg
https://getcomposer.org/doc/05-repositories.md#path
+ спасибо, Макс, классы тоже видны теперь
Axenia
helgispbru (120.01) увеличил карму Pathologic93 (5296.12)
Null
https://github.com/evolution-cms/evolution/releases/tag/1.4.15
Null
https://github.com/evolution-cms/evolution/releases/tag/3.1.6
Кирилл
Всем привет, сразу простите за оффтоп. Есть ли тут люди, знакомые с Prestashop, к кому можно обратиться в лс за помощью с пагинацией товаров?
Sasha
паламалас
Aliaksandr
Я слишком большие донаты на онлифанс заслал, вот и поломалось 😁
Sasha
Я слишком большие донаты на онлифанс заслал, вот и поломалось 😁
походу за частые звонки в техподдержку меня там не очень рады видеть
Umka
всем привет, подскажиет по формлистер. пользователь отправил письмо с формы, автоматом ему отправляется письмо (автоответчик), и вот в содержании автоответчика прилагается пдф файл который получает пользователь. это можно из коробки - без prepare?
Umka
так есть же ccSenderTpl или что-то вроде того, впихните туда ссылку на файл
что то такое видел, вопрос в том что он отправит письмо с ссылкой или прикрепит сам файл...
Алексей
не пробовал, не скажу
Umka
и на том спасибо!
Sasha
а фигу вроде написано что Файлы отправляются только в письме c шаблоном reportTpl но может это неверно и устарело, Кот?
Umka
спасибо
Алексей
доброго времени суток, нужна помощь по плагину https://github.com/dzhuryn/commerce-delivery-novaposhta-pickup
Алексей
делал на своем аккаунте, все норм, начал все переносить на аккаунт заказчика не работает, хостинг один и тот же, чанки, шаблоны, css, все перенес, но вот плагин что-то не хочет работать пишет Невозможно загрузить результаты, консоль чистая, при /commerce-delivery-np-pickup?action=update отдает true
Алексей
есть подозрение что хостинг блокирует всякие левые запросы с сайта, у меня такое было, даже когда pagespeed не давал сайт проверить, хост заблокировал девые запросы, подозрения у него были на вирусы, но тут один сайт, не то что у меня бардак
Anonymous
Кто подскажет,как на бегете обновить сайт? Через Putty захожу жедаю cd ..../core вызваю php artisan и тишина.
Алексей
почему при попытке импортировать базу возникает ошибка SQL запрос: CREATE TABLE f4qw_commerce_order_payments ( id int(10) unsigned NOT NULL AUTO_INCREMENT, order_id int(10) unsigned NOT NULL, amount decimal(16,2) NOT NULL, paid tinyint(1) unsigned NOT NULL DEFAULT '0', hash varchar(128) NOT NULL, payment_method varchar(255) NOT NULL DEFAULT '', original_order_id varchar(255) NOT NULL DEFAULT '', meta text NOT NULL, created_at timestamp NULL DEFAULT NULL, updated_at timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY order_id (order_id), KEY hash (hash), KEY original_order_id (original_order_id), KEY original_order_id_2 (original_order_id), KEY original_order_id_3 (original_order_id), CONSTRAINT commerce_order_payments_ibfk_1 FOREIGN KEY (order_id) REFERENCES f4qw_commerce_orders (id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 Ответ MySQL: Документация #1215 - Невозможно добавить ограничения внешнего ключа
Алексей
все очистил, хочу сайт восстановить до своих косяков))) не могу) файлы то норм, а вот с базой лажа