^(?!-)(?!.*--)[A-Za-z0-9-]+(?<!-)$
Объяснение:
^ # Anchor at start of string
(?!-) # Assert that the first character isn't a -
(?!.*--) # Assert that there are no -- present anywhere
[A-Za-z0-9-]+ # Match one or more allowed characters
(?<!-) # Assert that the last one isn't a -
$ # Anchor at end of string
Возможно, у вас не возникнет проблем с использованием такой структуры, просто убедитесь, что вы вызываете то, что хотите, в файле rout.php.
У меня похожая структура в контроллерах, и она работает:
/controllers/controller1.php
/controllers/controller2.php
/controllers/controller3.php
/controllers/logged/controller1.php
/controllers/logged/controller2.php
/controllers/logged/controller3.php
/controllers/admin/controller1.php
/controllers/admin/controller2.php
/controllers/admin/controller3.php
Файлы в папке контроллера являются открытыми, файлы в зарегистрированной папке требуют входа в систему, а файлы в admin требуют специального входа. Есть некоторые общие имена, и нет проблем с этим, если вы правильно настроили маршруты