Я знаю, что можно убрать файлом .htaccess, но у меня в файле js прописан ajax c расширением php
пример:const url = "/ajax/ajax.preReg.php?name="+user_name;
и если я уберу оттуда php,то все сломается
можно ли как то модифицировать .htaccess или есть другой способ?
Почему?
вот на это я не могу ответить, если убираю, то все ломается(
Так а после убирания в коде что, и что выдает в консоли 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
Наверно да, почему б не проверить )
идея хоть и была верной, но у меня все равно все сломалось
Попробуйте в .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