убрать расширение файла php
Как удалить расширение файлов php из URL (ссылок) на сайте
В сегодняшней заметке я расскажу как можно быстро и легко убрать расширения php, cgi, html и любые другие из URL (из ссылок в адресной строке). Иногда такая потребность возникает, например, для придания ссылкам красоты и большего удобства для посетителей сайта.
К примеру из http://example.com/pagename.php нужно сделать http://example.com/pagename
При этом, разумеется, нужно при необходимости заменить «php» в строках 3 и 4 на нужное расширение.
После этого переход по ссылкам вида http://example.com/pagename начнёт происходить без ошибок.
Альтернативный вариант.
Наш читатель aleksey предложил ещё вот такой вариант:
Обратите внимание, может влиять на обработку POST-запросов отправляемых скриптам с расширением php! (спасибо S1lllver за важное уточнение)
#301 редирект с example.com/page.html на example.com/page
RewriteCond %
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
Возможные проблемы
Если Ваш хостер использует связку nginx+Apache, то при попытке вышеописанным методом удалить расширения из ссылок на картинки, html-файлы и прочую статику будет отдаваться ошибка 404.
В этом случае Вам необходимо либо самостоятельно настроить сервер таким образом, чтобы исключить нужные типы файлов из списка статических файлов либо обратиться в службу технической поддержки с той же просьбой.
Прокомментировать Отменить комментарий
15 комментариев к “Как удалить расширение файлов php из URL (ссылок) на сайте”
Лепить «абы что» не хочу, а вдумчиво заняться ни времени, ни энтузиазма.
Хотя Вы правы — без фавикона немного неудобно плюс в поисковой выдаче не очень видно.
Займусь.
Как удалить расширение из строки в PHP?
Есть три способа удаления расширения из строки. Они следующие
Использование функции pathinfo (): Функция pathinfo () возвращает массив, содержащий имя каталога, базовое имя, расширение и имя файла.
Синтаксис:
В качестве альтернативы, если в качестве параметра передается только одна константа PATHINFO_, возвращается только та часть полного имени файла.
Пример:
// Инициализация переменной с именем файла
// Извлечение только имени файла с использованием констант
Примечание. Если имя файла содержит полный путь, возвращается только имя файла без расширения.
Использование функции basename (): Функция basename () используется для возврата завершающего компонента имени пути в виде строки. Basename () наивно работает с входной строкой и не знает о фактической файловой системе или компонентах пути, таких как «..»
Синтаксис:
Когда известно расширение файла, оно может быть передано в качестве параметра функции basename, чтобы сообщить ей об удалении этого расширения из имени файла.
Пример:
// Инициализация переменной
// с именем файла
// Суффикс передается как второй
// параметр
Синтаксис:
Пример:
// Инициализация переменной
// с именем файла
// Показать имя файла
Примечание. Если имя файла содержит полный путь, то возвращается полный путь и имя файла без расширения.
Убрать расширение php в адресной строке
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как сделать, чтобы в адресной строке не отображалось расширение php?
как сделать чтоб не высвечивалась приставка php? и заходить что б можно было
Как убрать GET параметры в адресной строке
Здравствуйте! Возможно преобразовать ссылку test1.ru/index.php?page=1 в test1.ru/index/page/1/.
Как убрать /public/ в адресной строке?
.htaccess / AddDefaultCharset utf-8 RewriteEngine on RewriteCond %
Ну так измените
Добавлено через 1 минуту
перекинул, но не выходит.
У меня это работает. Тоже на Денвере
Добавлено через 8 минут
Если я правильно поняла, то это:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://blitz.ua/
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use ‘LimitInternalRecursion’ to increase the limit if necessary. Use ‘LogLevel debug’ to get a backtrace., referer: http://blitz.ua/?id=3&p=2
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Не показывать расширение в адресной строке
Как убрать расширение страницы(например *.php). Что бы вместо site.ru/index.php было site.ru/index
Расширение в имени файла в адресной строке
Почему на некоторых сайтах в адресной строке отображается например : http://mysite.com.ua/filename.
Форум PHP программистов ► PHP практикум ► PHP для начинающих
Здесь живет
Профиль
Журнал
Группа: ★ЛжеЭксперт★
Сообщений: 5211
Пользователь №: 24565
На форуме:
Карма: 60
Не пью :
8 лет, 11 месяцев, 24 дня
inpost
Хм. Я наверно не правильно выразился. Я пытаюсь сделать не
inpost
Разобрался. Надо было модуль rewrite включить. Но тем не менее. Вот такой код нашел,
Как раз то что нужно было. Спасибо.
Это как? Ну я понял что типо если расширение существует в адресной строке то перезагружаемся и убираем расширение, а как так сдела и где?
Всё норм расширение убрал php ‘шное. Как понимаю певые 2 строчки это исключения а 3яя задаёт определённые параметры для определённого расширения.
Спустя 1 минута, 25 секунд Эли4ка написал(а): и также редирект для отдельных файлов можно сделать с помощью условий if..
Надо как то из этого
Тут по любому что то с этой строкой надо сделать, как то расширение наверно надо поменять на что то типо *
Заказчику все понравилось, а в самом конце я заменил расширение на exe =)))
|
Подписаться на тему
Уведомление на e-mail об ответах в тему, во время Вашего отсутствия на форуме.
Подписка на этот форум
Уведомление на e-mail о новых темах на форуме, во время Вашего отсутствия на форуме.
Скачать/Распечатать тему
Скачивание темы в различных форматах или просмотр версии для печати этой темы.
Удалять.с расширением PHP.htaccess
а. У меня есть несколько страниц, которые используют вкладки и URL похоже на страницу.php # tab-возможно ли это?
это возможно? Также при этом мне нужно удалить».php » из ссылок в моем заголовке nav включает файл? Должен IE «support» be support?
Я буду продолжать искать, пытаться и т. д. Было бы в подкаталоге вызвать какие-либо проблемы?
12 ответов:
Re a.) Да, это возможно, просто добавьте #tab к URL-адресу.
Re b.) это возможно с помощью QSA (строка запроса добавить), см. ниже.
этой должны также работать в подкаталоге путь:
Apache mod_rewrite
то, что вы ищете-это mod_rewrite,
описание: предоставляет механизм перезаписи на основе правил для перезаписи запрошенные URL-адреса на лету.
вообще говоря, mod_rewrite работает путем сопоставления запрошенного документа с указанными регулярными выражениями, а затем выполняет перезапись URL внутри (в процессе apache) или снаружи (в браузере клиентов). Эти переписывания могут быть такими просто как внутренне переводить example.com/foo в запрос на получение example.com/foo/bar.
документы Apache включают в себя mod_rewrite руководство и я думаю, что некоторые из вещей вы хотите сделать в нем. подробное руководство и mod_rewrite.
силу www поддомена
руководство по перезаписи включает в себя инструкции для этого под Каноническое Имя пример.
удалить косые черты (Часть 1)
я хотел бы удалить все конечные косые черты со страниц
я не уверен, почему вы хотите сделать это, поскольку руководство по перезаписи включает пример для полной противоположности, т. е., всегда, включая косую черту. Документы предполагают, что удаление конечной косой черты имеет большой потенциал для причинения вопросы:
каждый вебмастер может спеть песню о проблеме трейлинг косая черта на URL-адреса, ссылающиеся на каталоги. Если они отсутствуют, то сервер сбрасывает ошибку, потому что если вы говорите /
quux/foo/ затем сервер ищет файл с именем foo. И потому что этот файл каталог он жалуется. На самом деле он пытается исправить это сам большинстве случаев, но иногда этот механизм нужно эмулировать с помощью вы. Например, после того, как вы сделали много сложных URL переписывание в CGI-скриптов и т. д.
возможно, вы могли бы расширить, почему вы хотите, чтобы удалить конечную косую черту все время?
при правильном сочетании регулярных выражений это должно быть возможно в какой-то степени. Тем не менее, я могу предвидеть некоторые возможные проблемы с индексными страницами, которые не запрашиваются правильно и не соответствуют каталогам правильно.
для например, это будет правильно переписать example.com/test в качестве запроса example.com/test.php:
но сделает example.com не удается загрузить, потому что нет example.com/.php
я собираюсь предположить, что если вы удаляете все конечные косые черты, то выбор запроса на индекс каталога из запроса на имя файла в Родительском каталоге станет почти невозможным. Как определить запрос для каталога ‘foobar’:
из запроса на файл с именем foobar (который на самом деле foobar.php)
но есть и другой вариант, установить DefaultType и DirectoryIndex директивы такой:
теперь запросы на привет.txt (и все остальное) успешны, запросы к example.com/test вернет обработанную версию теста.php, и индекс.php файлы будут работать снова.
я должен дать кредит, где кредит должен для этого решения, как я нашел его Michael J. Radwins Blog путем поиска Google для php без расширения apache.
удалить косые черты
некоторые ищут apache remove trailing slashes привел меня к некоторым страницам поисковой оптимизации. По-видимому, некоторые системы управления контентом (в данном случае Drupal) сделают контент доступным С и без конечной косой черты в URL-адресах, что в мире SEO приведет к тому, что ваш сайт понесет штраф за дублирование контента. источник
решение кажется довольно тривиальным, используя mod_rewrite переписываем при условии, что запрошенное ресурс заканчивается в / и переписать URL, отправив обратно 301 Permanent Redirect заголовок HTTP.
теперь мы кое-что получаем. Давайте сложим все это вместе и посмотрим, как это выглядит.
это предполагает, что домен foobar.com и это так работает на стандартном порту 80.
флаг ‘R’ описан в RewriteRule директива разделе. Фрагмент:
redirect|R [=code] (force redirect) подстановка префикса с http://thishost[:thisport]/ (что делает новый URL URI), чтобы заставить внешнее перенаправление. Если код не задан, HTTP-ответ 302 ( ПЕРЕЕХАЛ ВРЕМЕННО) будет возвращен.
Конечная Нота
я не смог получить удаление косой черты для успешной работы. Перенаправление в конечном итоге дает мне бесконечные циклы перенаправления. После прочтения оригинальное решение ближе у меня создается впечатление, что приведенный выше пример работает для них из-за того, как настроена их установка Drupal. Он упоминает конкретно:
на обычном сайте Drupal с включенными чистыми URL-адресами эти два адреса в основном взаимозаменяемы
в отношении URL-адресов, заканчивающихся и без порезов. Кроме того,
в дополнение к другим ответам выше,
этот код будет работать в корне/.htaccess, Обязательно измените базу перезаписи, если вы хотите поместить ее в файл htaccess в подкаталоге.
на apache 2.4 и более поздних версиях вы также можете использовать флаг END для предотвращения ошибки бесконечного цикла. Следующий пример работает так же, как и выше на apache 2.4,
следующий код отлично работает для меня:
- убрать пустые элементы массива php
- убрать символ в конце php