Такая конструкция
RewriteCond %{QUERY_STRING} ^(.*)$
Должно быть
RewriteCond %{QUERY_STRING} ^(.+)$RewriteRule ^article/$ /article/? [R=301,L]
RewriteCond %{THE_REQUEST} \?RewriteRule ^article/$ /article/? [R=301,L]
Это называется взлом сайта.
А зачем Вам это делать на php, если у Вас выделенный сервер? Делайте через SSH.---------- Добавлено 27.10.2016 в 22:37 ----------
Если бы это было возможно, то таким же макаром можно было бы получать пароли-логины, переписку и прочие конфиденциальные данные.
Вам и написали, как это можно сделать в .htaccess. Именно с Вашей структурой файлов. Ваш get-запрос передаётся в файл article.php после преобразования через правило RewriteRule, и в ссылке кусок "article.php?id=" совершенно не нужен, id вытаскивается из адреса в ходе преобразования.
Осмелюсь предположить, что Вы скачали не движок, а какой-то хлам. Потому что такого мусора, что у Вас в браузере при выводе главной страницы, вообще быть не должно никогда. Советую посмотреть файл index.php на предмет наличия там внятного содержимого.
Ну это у кого как. Если лёгкая CMS, то она загрузит стартовую страницу быстрее, чем Ваш лэндинг. И не у всех одностраничники - чаще удобнее делать несколько страниц, а там пойдут проблемы с общими для всех страниц элементами. Типа изменил меню - меняй на каждой странице. Да и на одностраничнике удобнее изменять конкретный материал, а не гонять туда-сюда всю страницу.
Этот плагин есть в Джумле, даже если это версия 1.0. Но в админке не работает в целях безопасности, если что.
И заодно сделайте, чтобы её можно было убирать - для тех, кто не хочет, чтобы ему позвонили. Раздражает это мельтешение.
Чисто как вариант, вообще "сносит" вопросительный знак
RewriteCond %{THE_REQUEST} \? RewriteRule ^[^/]*$ /? [R=301,L]