Как убрать php файл

Объяснение кода: убрать расширение php в конце url

Объясните, пожалуйста, код. А если есть ошибки, то исправьте. Этот код для того чтоб в конце url убиралось расширение php . Да кстати, ещё скажите как добавлять сайты для убирания расширения. .htaccess

RewriteEngine on RewriteCond % !-d RewriteCond %\.php -f RewriteRule ^(.*)$ $1.php 

5 ответов 5

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

В этом коде неправильно сделаны комментарии, поэтому он и не работает.
Комментарии должны писаться отдельной строкой до каждой инструкции и перед ними должен ставится знак # .
Правильно нужно делать так:

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

В этом случае, инструкции будут работать вместе с комментариями.

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

1.php — это тот самый файл в котором будет убираться расширение? Если да, то напишите как добавить ещё одну страницу

Читайте также:  Тег INPUT, атрибут name

не 1.php, а $1.php. Доллар означает, что берем первую переменную из регулярки, которая соответствует первым скобкам.

Дак то есть если я этот код вставлю без изменений, прям как здесь написано, то на каждой странице будет уже отображаться без расширения? Если да, то у меня высвечивается ошибка, что нету такой страницы(в конце ссылки просто убираю расширение). А если просто на страницу захожу, то расширение не убирается.

AddDefaultCharset UTF-8 RewriteEngine on RewriteRule ^([^.?]+)$ %.php [L] RewriteCond % "^[^ ]* .*?\.php[? ].*$" RewriteRule .* - [L,R=404] 
)" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" data-se-share-sheet-license-name="CC BY-SA 4.0" data-s-popover-placement="bottom-start">Поделиться
)" title="">Улучшить ответ
)">изменён 11 июл 2019 в 9:51
De.Minov
23.2k4 золотых знака34 серебряных знака67 бронзовых знаков
ответ дан 6 сен 2016 в 1:27
1
    Пожалуйста, постарайтесь писать более развернутые ответы. Уверен, автор вопроса был бы благодарен за ваш экспертный комментарий к приведенному выше коду.
    – Nicolas Chabanovsky
    6 сен 2016 в 5:39
Добавить комментарий|
0

Я не могу объяснить работу вашего кода, но могу дать вам более короткое решение, данной задачи.

RewriteEngine On RewriteRule ^(\w+)$ $1.php [NC]

Источник

Убираем .html, .php и .htm в конце URL-адресов на Apache/Nginx

Часто слышу, что сеошники советуют убирать окончания .html, .php и .htm в адресах ваших сайтов – якобы, это негативно влияет на продвижение. Кто-то же говорит, что это просто визуально добавляет адресу лишний мусор.

В любом случае, убирать или оставлять эти окончания, решать вам, я же покажу, как это реализовать на статичном сайте (то есть сайте, находящемся не на CMS). Почему только на статичном? Потому что для различных CMS это реализовывается разными методами, о которых я также расскажу в последующих статьях.

Не утверждаю на 100%, что этот метод не будет работать на какой-то из CMS – пробуйте и о результатах отписывайтесь в комментариях.

Убираем .html, .php и .htm на Apache

Как вы знаете, в Apache существует файл .htaccess, который содержит в себе набор настроек и конфигураций сервера. С его помощью мы и будем убирать ненужные нам окончания.

1. Подключитесь к сайту по FTP и в корне сайта найдите файл .htaccess. Откройте его. Если такой файл отсутствует – создайте.

2. Найдите строчку, содержащую:

Сразу после нее вставьте следующие правила.

Если вам необходимо убрать .php:

 RewriteCond %{REQUEST_FILENAME> !-f RewriteRule ^([^.]+)$ $1.php [NC,L]

Если вам необходимо убрать .html:

 RewriteCond %{REQUEST_FILENAME> !-f RewriteRule ^([^.]+)$ $1.html [NC,L]

Если вам необходимо убрать .htm:

 RewriteCond %{REQUEST_FILENAME> !-f RewriteRule ^([^.]+)$ $1.htm [NC,L]

Если строчка «RewriteEngine On» отсутствует в файле – добавьте ее в самое начало.

После чего сохраните изменения и отправьте файл обратно на сайт. Если раньше адреса на вашем сайте были вида

 https://www.pandoge.com/page.php

то теперь вы можете открыть эту страницу по адресу:

Убираем .html, .php и .htm на Nginx

1. Для того чтобы подобную настройку произвести в Nginx, откройте файл конфигурации по адресу:

в FTP (если вам позволяют права) либо через панель управления сервером.

2. Далее, в секцию location / , вставляем необходимые правила.

Если вам необходимо убрать .php:

Если вам необходимо убрать .html:

Если вам необходимо убрать .htm:

Если в процессе настройки у вас что-то не получается – пишите об этом в комментариях.

Установка бесплатного сертификата от Let’s Encrypt на сайт с сервером CentOS 6 + ISPmanager 4 + Nginx + Apache

Источник

htaccess: Убрать расширение *.php файла из URL

Чтобы убрать расширение файла *.php из URL, добавьте правило в файл htaccess. Затем перепишите ссылки на URL без .php. В конце настройте 301 редирект но новый формат URL.

1. Вариант: Прямое сопоставление

RewriteEngine On RewriteCond % !-d RewriteCond %\.php -f RewriteRule ^(.*)$ $1.php # в таком случае # https://localhost/index соответствует обращению к файлу index.php в корне локального сайта # https://localhost/about соответствует обращению к файлу about.php в корне локального сайта

1.2 Вариант: Прямое сопоставление с добавлением косой черты в конце

RewriteEngine On RewriteCond % !-d RewriteCond %\.php -f RewriteRule ^(.*?)/?$ $1.php # в таком случае # https://localhost/about соответствует обращению к файлу about.php в корне локального сайта # https://localhost/about/ соответствует обращению к файлу about.php в корне локального сайта

2. Вариант: Через роутерный файл

RewriteEngine On RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ index.php?alias=$1 [L,QSA] # в этом случае # https://localhost/index соответствует обращению к файлу index.php в корне локального сайта c GET переменной alias равной index # https://localhost/about соответствует обращению к файлу index.php в корне локального сайта c GET переменной alias равной about # https://localhost/about/me/ соответствует обращению к файлу index.php в корне локального сайта c GET переменной alias равной about/me/

Код был обновлён. Предыдущий рейтинг:

Источник

How to remove .php, .html, .htm extensions with .htaccess

I recently wanted to remove the extensions from my website, in order to make the URLs more user and search engine friendly. I stumbled across tutorials on how to remove the .php extension from a PHP page. What about the .html ? I wanted to remove those as well! In this tutorial I’ll show you how to do that easily, by editing the .htaccess file.

What is an .htaccess file

An .htaccess file is a simple ASCII file that you create with a text editor like Notepad or TextEdit. The file lets the server know what configuration changes to make on a per-directory basis.

Please note that .htaccess is the full name of the file. It isn’t file.htaccess , it’s simply .htaccess .

.htaccess files affect the directory in which they are placed in and all children (sub-directories). For example if there is one .htaccess file located in your root directory of yoursite.com , it would affect yoursite.com/content/ , yoursite.com/content/images/ , and so on…

It is important to remember that this can be bypassed. If you don’t want certain .htaccess commands to affect a specific directory, place a new .htaccess file within the directory you don’t want to be affected with the changes, and remove the specific command(s) from the new file.

Features

With an .htaccess file you can:

  • Redirect the user to different page
  • Password protect a specific directory
  • Block users by IP
  • Preventing hot-linking of your images
  • Rewrite URLs
  • Specify your own Error Documents

In this tutorial we’ll be focusing only on rewriting URLs.

Removing Extensions

To remove the .php extension from a PHP file for example yoursite.com/wallpaper.php to yoursite.com/wallpaper you have to add the following code inside the .htaccess file:

RewriteEngine On RewriteCond % !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 

If you want to remove the .html extension from a html file for example yoursite.com/wallpaper.html to yoursite.com/wallpaper you simply have to change the last line from the code above, to match the filename:

That’s it! You can now link pages inside the HTML document without needing to add the extension of the page. For example:

Adding a trailing slash at the end

I received many requests asking how to add a trailing slash at the end, for example: yoursite.com/page/

Ignore the first snippet and insert the code below. The first four lines deal with the removal of the extension and the following, with the addition of the trailing slash and redirecting.

RewriteEngine On RewriteCond % !-f RewriteRule ^([^/]+)/$ $1.php RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php RewriteCond % !-f RewriteCond % !-d RewriteCond % !(\.[a-zA-Z0-9]|/)$ RewriteRule (.*)$ /$1/ [R=301,L] 

Link to the HTML or PHP file the same way as shown above. Don’t forget to change the code if you want it applied to an HTML file instead of PHP.

Some people asked how you can remove the extension from both HTML and PHP files. I don’t have a solution for that. But, you could just change the extension of your HTML file from .html or .htm to .php and add the code for removing the .php extension.

Conclusion

For those who are not so experienced with .htaccess files there is an online tool for creating them. It’s useful for novice users to get started, and easy to use.

Updates

Attention GoDaddy users: In order to remove the extensions you need to enable MultiViews before. The code should look like this:

Options +MultiViews RewriteEngine On RewriteCond % !-d RewriteCond % !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 

If you’re worried that search engines might index these pages as duplicate content, add a meta tag in the of your HTML file:

Источник

Оцените статью