При работе с файлами .htaccess важно учитывать, что вы должны проверить, является ли путь каталогом или файлом, а затем приступить к выполнению своих действий.
Я использовал ваш код, и он работал правильно, но просто добавил проверки -f и -d, чтобы убедиться, что это не влияет на другие страницы.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
#remove .php from all pages
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC]
#blog/title-here
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([A-Za-z0-9-\+]+)/?$ /blog-details.php?title=$1 [NC,L,QSA]
Чтобы проверить ваш файл .htaccess и с некоторыми фиктивными URL, я очень рекомендую вам проверить MadeWithLove
https://htaccess.madewithlove.be/
Это позволит вам иметь тестовый входной URL и посмотреть, получите ли вы правильный выходной URL ( фактический URL, который прочитал бы ваш сервер).
Учитывая сказанное, я бы порекомендовал вам изучить маршрутизацию для будущих проектов и саморазвития. Фреймворк, который я бы порекомендовал проверить - это фреймворк без жира (f3) для PHP. В него очень легко войти, вы можете выучить его за 2 дня, и это сэкономит много времени на разработке - содержит маршрутизацию, ORM, глобальные переменные, упрощенные запросы SQL и множество других функций, которые, по сути, сохранят вас PHP разработчик, а не разработчик фреймворка.