КАК я сказал в комментариях
Здесь пропущено несколько вещей (0-9a-zA-Z]+)
вроде [-
как в ([-0-9a-zA-Z]+)
Это тебя тоже укусит ...
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Сопоставьте все, что не имеет точки, и добавьте к ней .php
с последним флагом [L]
. Могу поспорить, что он никогда не пройдет этого.
Как правило, вы хотите сначала более конкретные правила, а затем более общие правила.
Кроме того, если я правильно помню NC
, я не имею в виду, так что вы можете избавиться от A-Z
и просто сделать [-a-z0-9]+
Лучший способ
Я стараюсь избегать переписывания строк запроса и полагаюсь на метод переписывания URI, распространенный в средах MVC
example.com/index.php/category/sub-cat/a-page-of-mine
А затем используйте маршрутизатор и HTACCESS, чтобы удалить только index.php
, так намного проще.
На моей странице GitHub есть довольно простой маршрутизатор, который показывает, как маршрутизировать URL-адреса.
https://github.com/ArtisticPhoenix/MISC/tree/master/Router
Одна большая проблема, связанная с путаницей со строкой запроса, заключается в том, что вы можете потерять возможность использовать $_GET
так, как она предназначена для таких вещей, как формы поиска и т. Д. Так что лучше маршрутизировать, а не переписывать. Кроме того, способ MVC дает вам единую точку входа для всех запросов, через которые можно упростить управление такими вещами, как константы и автозагрузчики ....