Разберем [^/]\.php(/|$)
[^/]
- начало строки НЕ начинается со / ( тут коллега был не прав это именно отрицание символа)
\.php
- экранирование точки то есть точка это как точка а не любой символ. ТО есть .php должно быть в урле
(/|$)
-или или вертикальная черта разделитель соответственно оканчивается или на / или просто без него.
Но я бы всеже сделал более правильное выражение посколкьу регулярка подойдет и к такому урлу
/.php/
А это совсем не тру, хотя и имеет место жить.
Как минимум я бы остановился на
[^/].+\.php(/|$)
.+
- Как минимум 1 знак или символ там должен быть
В результате регурярка имела бы значение следующее.
/x.php/
Но и это не все
файл со слешем не бывает, и это не правильно так что
[^/].+\.php&
- тут будет соответствие тольок x.php что на мой взгляд более правильно.