Как сделать путь на сайте без расширения html php

Обновлено: 05.07.2024

Путь на сервере до файла через php, выведем на экран ! Вообще получим путь на сервере до файла разными способами!

Все о пути на сервере до файла на сайте

    -> теория -> без php -> глобальная переменная -> __FILE__ -> PHP_URL_PATH

Что такое путь до файла на сервере -> теория

Иногда, очень трудно понять, что означают те или иные значения! Как можно объяснить по простому, Что такое путь до файла на сервере!?

Давайте посмотрим в адресную строку и там вы увидите ссылку на файл и выше выделенного красным, вы не сможете подняться, это домен или по-другому можно его обозвать -> корневая папка, но данный путь на корневой папке не останавливается.

Выше есть еще несколько папок, с разной степенью доступа! И если мы весь путь, который существует выше корневой папки поставим вместо домена. то получим путь на сервере до файла

И если вы используете php, то вам все равно придется использовать путь на сервере до файла, потому, что многие функции работают только с файлом, к которому прописан путь на сервере

Получить путь до файла на сервере

Можно ли получить путь до файла на сервере без php!? Можно, но зачем!? Предположим, что у вас нет php!? Очень странно, но возможно! Никогда такой херней не занимался, но что не сделаешь для своих любимых пользователей.

У меня только единственный способ . кроме обращения в тех поддержку.

Заходим в админку, поскольку я не умею гадать, то заходим в свою админку сайта, у нас это DIRECTADMIN на ruweb - е

Ищем вкладку создать ftp аккаунт.

После того, как вы попали на новую вкладку опять нажимаем ftp аккаунт

Получить путь до файла на сервере

Получить путь до файла на сервере

Далее выбираем первый чекбокс и внизу видим путь на сервер до корневой папки:

Получить путь до файла на сервере

Получить путь до файла на сервере

Получить путь до файла на сервере -> способ №1

Да! Напоминаю, что в зависимости от структуры вашего сервера, и будет зависеть путь до файла на сервере

Для того, чтобы получить путь до файла на сервере нам понадобится, путь на сервере до корневой папки

Далее нам понадобится путь от корневой, до файла:

Теперь соберем все вместе и выведем через echo

И получим путь на сервере до файла через глобальную переменную $_SERVER

Но у данной переменной есть некоторый минус, она вам покажет все, что есть после расширения, например get запрос.

Давайте сделаем живой пример и создадим ссылку с гет запросом нажмите по ссылке и посмотрите ниже пункта 4, что прибавилось в строке. выделено красным:

Как получить путь на сервере до файла с помощью -> __FILE__

Для того, чтобы получить путь на сервере до файла с помощью __FILE__, нам потребуется в самом файле установить код php!

Прямо здесь, выведем вот такую конструкцию получения всего пути на сервере до файла:

Пример вывода пути до файла на сервере:

Путь на сервере до файла php с использованием PHP_URL_PATH

Когда вам нужно избавиться от всякого мусора в пути до файла на сервере, то можно использовать ниже идущий способ:

Если вы собирайтесь делать сайт, то вам все равно придется иметь на борту несколько путей и разных, в разных переменных!

Так не получится, что например вы написали одну переменную и этого вам хватит - точно вам говорю не хватит!

Вчера мы рассматривали путь до корневой папки .

Из которой вы узнали, что путь до корневой папки я помещал в переменную - $home

В переменную $parse_url поместим функцию parse_url и разберем на части $_SERVER['REQUEST_URI'] из которой получим только часть ссылки где есть путь:

Выведем на экран путь на сервере до файла третьим способом:

Результат вывода пути на сервере до файла php:

Как сделать путь на сервере самостоятельно?

Кроме всех выше перечисленных способов получения пути к файлу - мы констатируем, что файл уже существует , а если нам нужно создать путь к файлу, который не существует?

Для того, чтобы сделать такой путь на сервере нам понадобится:

Константа, которая не изменяется, (кроме если вы не выше корневой) - это путь до корневой на сервере :путь до корневой

Далее - нам нужно знать путь до папки(если папка будет существовать), например :

Разница в том, что если вы еще не заметили, что на youtube нет расширения файла для их страницы просмотра, поэтому мне интересно, почему некоторые сайты не используют расширения файлов и для чего они служат?

То, что вы видите, является примером маршрутизации URL. Вместо указания на конкретный файл (например, страница.php), сервер использует таблицу маршрутизации или конфигурацию, которая направляет запрос обработчику, который фактически отображает html (или что-либо еще в зависимости от возвращаемого типа mime). Если вы заметили, StackOverflow использует тот же механизм.

Наличие или отсутствие расширения не имеет значения. Браузер действует на тип MIME, возвращаемый сервером,а не на любое расширение, используемое в URL.

Я видел разные сайты, которые делают это, но похоже, что они также по-разному реагируют на вещи:

Что приводит к другому вопросу: существуют ли разные методы для этого?

Изменить: Кажется, что Apple использует папку для каждой страницы, например, папку с именем "iphone" с файлом index.html внутри? Но Opera и Mozilla используют что-то в файле.htaccess?

Это оно! Теперь вы можете ссылаться на страницы внутри HTML-документа без необходимости добавлять расширение страницы. Например:

Они используют .htaccess а также URL rewriting , Это часть конфигурации сервера. Вы не можете сделать это только с помощью HTML.

Эта страница объясняет основы перезаписи URL.

Ваша папка должна содержать файл: index.* , Например: /iphone/index.html, который также может быть / iphone /

Или работать с .htaccess

В файле.htaccess в корневой папке вашего сайта просто добавьте следующую строку:

Сделайте ваш атрибут href равным странице, на которую вы хотите создать ссылку или. Если вам нужно переместиться вверх по каталогу.

Пример: href="contact.html" Пример: href="../links/contact.html"

Ответ, получивший наибольшее количество голосов, не проверяет, указывает ли URL-адрес на каталог, поэтому вы получите некоторые загадочные ошибки "не найдено", когда он попытается добавить ".html" к пути к каталогу. Легко исправляется:

Первое условие будет выполнено, только если путь не указывает на действительный каталог. Второй будет пройден только в том случае, если путь указывает на действительный файл при добавлении расширения.html. Если оба условия выполнены, правило перезаписи просто добавляет ".html" к имени файла.

Обратите внимание, что мы можем просто сопоставить весь путь с .* . Вы можете отклонить пути, содержащие символ точки, если хотите, но в этом нет необходимости, так как вы уже это проверили. .html является допустимым файлом. В любом случае нет необходимости экранировать символ точки, когда он находится внутри класса символов. Я знаю, ты это видишь [^\.] везде, но косая черта излишне. [^.] как его написать и выглядеть как профессионал регулярных выражений.

Этот вид перенаправления будет невидим для пользователя, потому что по умолчанию mod_rewrite выполняет подстановку внутренне, не информируя браузер. Если вы хотите сделать постоянное перенаправление, вы должны добавить флаг [R=301] в конце.

извините за вопрос noob, не могу понять, из чего я должен искать.

Я делаю сайт с данной страницы product.php?id=777
Я бы хотел, чтобы это было product/777

создать .файл htaccess в вашем веб-корне и введите следующее:

вместо использования mod_rewrite вы также можете использовать следующее .реврайт:

и просто назовите свой скрипт product на сервере (без .расширение файла php).

таким образом, вы можете вызвать его напрямую и получить любую добавленную строку как $_SERVER["PATH_INFO"]

как только вы попадете на эту страницу, вы можете разобрать это _url переменная, которая может быть любым форматом, который вы хотите, и обрабатывать запрос соответствующим образом.

для меня этот код работает:

в " / etc/apache2/sites-доступно / по умолчанию" или "httpd.conf"

вы должны иметь (по крайней мере) эти параметры в каталоге по умолчанию

или в каталоге конкретного сайта

и создать (он может не существовать, убедитесь, что он читается apache) или отредактировать ".реврайт "в директории сайта (например" /var / www/my-site/.реврайт") и добавьте этот код:

Если вы не хотите использовать mod_rewrite (я этого не делал), а другие ответы, похоже, не работают для вас (они не для меня). Тогда вы можете попробовать это вы работаете на Apache 2.4+.

более небезопасная версия: сделайте что-нибудь без расширения, запускаемого как файл PHP (это не так плохо, если, как моя реализация, у вас есть только один файл для всего сервера, но все равно оставит вас открытым для произвольного выполнения, если кто-то смог записать файл в этот каталог. опять же, если они могут написать файл, они могут дать ему расширение PHP, поэтому не совсем уверены, действительно ли это расширяет вашу экспозицию.)

поместите это в либо an .htaccess файл для вашего каталога (при условии, что они включены) или поместить его непосредственно в кусок в определении хоста.

Если вы хотите сделать его более конкретным (и, возможно, более безопасным) , вы можете просто заменить регулярное выражение чем-то более конкретным:

Читайте также: