Как убрать .php в конце адреса каждой веб-страницы сайта

Я знаю, что можно убрать файлом .htaccess, но у меня в файле js прописан ajax c расширением php
пример:const url = "/ajax/ajax.preReg.php?name="+user_name;
и если я уберу оттуда php,то все сломается
можно ли как то модифицировать .htaccess или есть другой способ?

Почему? :thinking:

вот на это я не могу ответить, если убираю, то все ломается(

Так а после убирания в коде что, и что выдает в консоли DevTools?

у меня есть файл ajax.getChampions.php
и я так понимаю, что он не может отправить туда запрос. т.к. убрала php

		const request = new XMLHttpRequest();
		const url = "/ajax/ajax.getChampions";
		request.open('GET', url);
		request.setRequestHeader('Content-Type', 'application/x-www-form-url');
		request.addEventListener("readystatechange", () => {
			if (request.readyState === 4 && request.status === 200) {
				divScore.innerHTML = request.responseText;
			}
		});
		request.send();
	}

Безымянный

А в .htaccess что?

Вообще обычно так не делают. На современных сайтах адрес никак не зависит от расположения файлов на сервере (кроме как правило некоторых статичных файлов типа картинок, CSS/JS). То есть на сервере этого форума нет папки t/kak-ubrat-php-v-koncze-adresa-kazhdoj-veb-straniczy-sajta с файлом 3479 и т.д.
Семантический URL — Википедия

Просто делают так, что веб-сервер при любых запросах запускает какой-то один определенный скрипт (часто его называют как-нибудь типа bootstrap), и этот скрипт определяет что делать (какой другой скрипт/функцию вызвать) в зависимости от запрошенного адреса и любых других данных запроса.
Чтобы не велосипедить это самому, обычно берут фреймворк. Это обычно есть во всех, и в больших типа Laravel/Symfony/Yii, и в микро типа Slim/Lumen.

AddDefaultCharset UTF-8

RewriteEngine on
RewriteRule ^([^.?]+)$ %{REQUEST_URI}.php [L]
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [L,R=404]

вот что у меня там написано

хм, хз, может какая-то ошибка в регекспах и этот путь не попадает под них.

Если оставить это

то тоже не работает с таким .htaccess?

Вообще я бы либо оставил .php везде, либо делал бы нормально с фреймворком как выше написано. Толку от таких полумер )

с фреймворками я ещё не работала, но правильно ли я понимаю, что если в роутере пропишу

<?php
  session_start(); 
  $uri = $_SERVER['REQUEST_URI'];
  $uri = explode('/', $uri);

  if($uri[1] == ""){
  }else if($uri[1] == "auth"){
    $content = file_get_contents("view/auth.php");
  }else if($uri[1] == "user"){
    $content = file_get_contents("view/cabinet.php");
  }else if($uri[1] == "reg")
    $content = file_get_contents("view/reg.php");
  require_once("index.php");
?>

по страницы должны закачиваться “…\reg”, а не “…/reg.php”? и т.п.

Непонятно о чем речь, что имеется в виду под “страницами”?
В этом коде видимо ожидается, что в адресе будет что-то типа http://example.com/неважно/что/......./reg

А как оно в этот роутер попадет если в .htaccess вроде бы нет чего-то такого, чтоб направлять всё туда?

имею ввиду, что этот роутер заменит маршрутизатор (назовем этот файл router.php)
а в .htaccess оно попадет вот так?

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ router.php [L,QSA]

php_flag display_errors on

Наверно да, почему б не проверить )

идея хоть и была верной, но у меня все равно все сломалось :weary:

Попробуйте в .htaccess

такую конструкцию
# Запускаем замену
RewriteEngine on
# Если запрашиваемый объект не папка
RewriteCond %{REQUEST_FILENAME} !-d
# если запрашиваемый объект с расширением php - файл
RewriteCond %{REQUEST_FILENAME}\.php -f
# делаем замену и дописываем .php
RewriteRule ^(.*)$ $1.php

или

такую
# Запускаем замену
RewriteEngine on
# Если запрашиваемый объект не папка
RewriteCond %{REQUEST_FILENAME} !-d
# если запрашиваемый объект с расширением файла
RewriteCond %{REQUEST_FILENAME} !-f
# делаем замену и дописываем .php
RewriteRule ^([^.]+)$ $1.php [NC,L]

P. S.
Строку RewriteEngine в файле .htaccess использовать существующую, новую такую же создавать не нужно.
И сразу под этой строкой прописывать правила.

P. P. S.
Вот пример нагуглился
Link: Убираем .html, .php и .htm в конце URL-адресов на Apache / Nginx