Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22

Как убрать расширение .php на страницах своего сайта? Apache 2.2.22

09.07.2013, 22:34. Показов 18306. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Начал изучать php и задался интересным вопросом, как убрать расширение .php на страницах своего сайта,
расположенного на локальном сервере (сервер Apache 2.2.22).
Гугл не помог решить вопрос, любые действия заканчиваются тем, что расширение убрать нельзя,
иначе 404-ый статус. Помогите, пожалуйста, разобраться с этим вопросом.

Предпринимал следующие попытки убрать расширение:

Кликните здесь для просмотра всего текста
Терминал:
Bash
1
sudo a2enmod rewrite
Теперь он отвечает: Module rewrite already enabled
Bash
1
sudo nano /etc/apache2/sites-available/default
Изменил данные, получив:
Code
1
2
3
4
5
6
<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
    </Directory>
Bash
1
sudo nano /etc/apache2/sites-available/default-ssl
Тоже изменил строку AllowOverride None на AllowOverride all:
Code
1
2
3
4
5
6
<Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        allow from all
    </Directory>
В файл .htaccess внёс следующее:
Code
1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
И за всё это время я очень много раз перезагружал сервер:
Bash
1
sudo apache2ctl restart
И:
Bash
1
sudo /etc/init.d/apache2 restart
Файл .htaccess, собственно, лежит в директиве сайта, который делаю, т.е. "/var/www/poetica".
Сервер apache 2.2.22, система linux ubuntu 13.04.
Страницы открываются как и раньше, т.е. следующие страницы спокойно работают:
http://127.0.0.1/poetica/ (http://127.0.0.1/poetica/index.php)
http://127.0.0.1/poetica/registration.php
Если убрать .php в индексе или в регистрации, выдаётся 404-ый статус:
Not Found
The requested URL /poetica/index was not found on this server.
Apache/2.2.22 (Ubuntu) Server at 127.0.0.1 Port 80

Может кто-то сталкивался с подобной проблемой ранее и сможет подсказать как её решить?
Заранее благодарен! Всем доброго времени суток и удачного программирования!)
Надеюсь, статья сможет помочь не только мне, но и "облегчит жизнь" другим новичкам в php.

Добавлено через 2 часа 17 минут
Быть может, допущена какая-то ошибка? Забыл уточнить, файл /etc/apache2/apache2.conf также менял, изменения:
строка:
Code
1
2
3
4
5
6
AccessFileName .htaccess
>>> строки:
AccessFileName .htaccess
    <Directory "/www/poetica">
        AllowOverride All
    </Directory>
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2013, 22:34
Ответы с готовыми решениями:

Как убрать Название сайта на всех страницах
Такая ситуация что название страницы генерируется на всех страницах так же на главной. Вот только они все слепленные получаются как убрать...

Как убрать вывод компонента на некоторых страницах сайта
Добрый день. В процессе создания сайта на joomla возник следующий вопрос: как убрать вывод компонента не на главной странице, а на...

Отображение меню на страницах сайта кодом <?php include $_SERVER['DOCUMENT_ROOT'].'/menu.php'; ?>
Перенёс сайт с одного хостинга на другой. Перестал работать код &lt;?php include $_SERVER.'/menu.php'; ?&gt; Голову уже сломал, не пойму...

49
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 16:50
Студворк — интернет-сервис помощи студентам
Bash
1
sudo gedit /etc/apache2/sites-enabled/000-default
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
 
    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
 
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/error.log
 
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
 
    CustomLog ${APACHE_LOG_DIR}/access.log combined
 
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
 
</VirtualHost>
Bash
1
2
sudo a2enmod rewrite
sudo /etc/init.d/apache2 restart
Чистая конфигурация, только что поставил с нуля php/apache/mysql, все изменение - в одном месте заменено "None" на "All". Все работает

Добавлено через 1 минуту
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
Ну вы же написали
именно, можно не трогать. Но от того, что вы его поменяете на стандартный - в другом файле значение не изменится
1
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 18:30  [ТС]
KOPOJI, Интересно, но (!)
Сейчас заметил различия в наших двух файлах, у меня там не было строк внизу документа:
Code
1
2
3
4
5
6
7
8
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
Файл изменил, затем провёл команду
Bash
1
sudo a2enmod rewrite
слогировало, что уже включен
Кстати, без "sudo" не хочет рестартовать сервер.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
developer@celeronych:~$ sudo a2enmod rewrite
[sudo] password for developer: 
Module rewrite already enabled
developer@celeronych:~$ /etc/init.d/apache2 restart
 * Restarting web server apache2                                                /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]
developer@celeronych:~$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2                                                 ... waiting .                                                           [ OK ]
developer@celeronych:~$
Not Found
The requested URL /poetica/registration was not found on this server.
Apache/2.2.22 (Ubuntu) Server at 127.0.0.1 Port 80

Добавлено через 9 минут
это мистика) у всех убирается, у меня нет) чувствую себя втройне нубом)
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 19:18
попробуйте так.

Code
1
2
3
4
5
6
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
 
RewriteRule ^(.*)$ index.php [L]
в index.php
PHP
1
<?php echo '<pre>'; var_dump($_GET);
зайдите по адресу http://localhost/site, http://localhost/site/foo, http://localhost/<font color="... >/foo/bar/ - что пишет?
Вместо site - название вашей директории в /var/www/
0
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 19:35  [ТС]
KOPOJI, Создал директиву чтобы не мучать поэтику. /var/www/sitename/
Там создал файл .htaccess с нуля
Состав файла скопировал. (кстати, это правильно что .htaccess не отображается нигде кроме crusader-а? в самих окнах я его не вижу) И сделал файл index.php
http://127.0.0.1/sitename/index
Not Found
The requested URL /sitename/index was not found on this server.
Apache/2.2.22 (Ubuntu) Server at 127.0.0.1 Port 80
Если открывать http://127.0.0.1/sitename/index.php выдаёт:
array(0) {
}
Всё же попробовал написать тот же код поверх всего кроме инклюд в поэтике , у меня этот же массив скопирнулся, а ещё все дивы "разлепились" - между ними у меня рассояние появилось. А сайт для телефонистов также.

Добавлено через 1 минуту
даже шрифт изменился в поэтике..
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 19:40
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
это правильно что .htaccess не отображается нигде кроме crusader-а?
да, по дефолту файл/папка, начинающийся с точки, файловые менеджеры скрывают (наподобие скрытых файлов в винде). В наутилусе показать скрытые файлы - CTRL+H, в dolphin, если память не изменяет - alt+.(точка).
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
http://127.0.0.1/sitename/index
меня больше интересуют результат перехода по адресу, к примеру, http://127.0.0.1/sitename/fddd
1
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 20:10  [ТС]
KOPOJI,
меня больше интересуют результат перехода по адресу, к примеру, http://127.0.0.1/sitename/fddd
http://127.0.0.1/poetica/
>>
Кликните здесь для просмотра всего текста
array(0) {
}

Онлайн проект "Poetica"



Сродни бокалу терпкого вина

Слова преобразятся в рифмы тени,

Эмоций взрыв получишь ты сполна,

Вкусив однажды тут стихотворений..

Регистрация

Вход
10-07-2013 | 20:06:00

Переходим по ссылке "Регистрация" >>
http://127.0.0.1/poetica/registration.php
Кликните здесь для просмотра всего текста
Онлайн проект "Poetica"

Регистрация
Введите данные
Введите логин

Введите пароль

Введите псевдоним

Введите e-mail

В конце не копирующаяся строка сабмита - зарегистрироваться, никаких изменений на странице регистрации
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 20:11
блин. Жмякните уже по этой ссылке - http://127.0.0.1/sitename/fddd, и результат выложите сюда
0
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 20:15  [ТС]
KOPOJI, https://www.cyberforum.ru/redi... JGZmRkZA==
И белый экран если жмякнуть.
Вставил ссылку в браузер, открыл,
array(0) {
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 20:45
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
array(0)
а что у вас в .htaccess ?
0
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 20:48  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
а что у вас в .htaccess ?
Code
1
2
3
4
5
6
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
 
RewriteRule ^(.*)$ index.php [L]
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 20:49
извиняюсь, я ошибся..
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
Code
1
RewriteRule ^(.*)$ index.php [L]
Code
1
RewriteRule ^(.*)$ index.php?url=$1 [L]
Добавлено через 38 секунд
но, судя по тому, что отсутствует ошибка - mod_rewrite работает
0
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 20:53  [ТС]
KOPOJI, вот так получается.
Теперь если создать страницу fddd.php и написать там
PHP
1
2
3
<?php
echo 'привет';
?>
Выдаёт 404, а если страницы нет или переходим по несуществующему адресу, хоть по http://127.0.0.1/sitename/fdddg.php хоть по http://127.0.0.1/sitename/fdddg - выдаёт array(0) {
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 20:56
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
выдаёт array(0) {
вы что-то делаете не так. Должно выдавать не пустой массив.
0
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 21:11  [ТС]
KOPOJI, вот скрины, всё по инструкции:

Содержимое папки sitename
Кликните здесь для просмотра всего текста

т.е.: index.php ; fddd.php ; .htaccess

Содержимое index.php:
Кликните здесь для просмотра всего текста

т.е.:
PHP
1
2
3
<?php
echo '<pre>'; var_dump($_GET);
?>
Содержимое файла .htaccess:
Кликните здесь для просмотра всего текста

т.е.:
Code
1
2
3
4
5
6
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
 
RewriteRule ^(.*)$ index.php [L]
Отображается в браузере на странице к примеру http://127.0.0.1/sitename/xd.php:
Кликните здесь для просмотра всего текста

т.е.: array(0) {
}

При переходе по http://127.0.0.1/sitename/fddd:
Кликните здесь для просмотра всего текста

т.е.: Not Found

The requested URL /sitename/fddd was not found on this server.
Apache/2.2.22 (Ubuntu) Server at 127.0.0.1 Port 80
0
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 21:23  [ТС]
извиняюсь, уже посмотрел справку по ВВ-кодам
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 21:23
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
Содержимое файла .htaccess:
я же выше написал, что опечатался, и надо исправить
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
т.е.: array(0) {
естественно. Потому что вы не исправили - передается "ничего"
Цитата Сообщение от Сергей Прокошин Посмотреть сообщение
The requested URL /sitename/fddd was not found on this server.
ошибка, походу, в том, что совпадает имя файла в адресе и в директории (тоже сталкивался с подобным, апач "отбрасывает" расширение файла и проверяет без него). Файлы должны отличаться от url в браузере (либо их можно перекинуть в какую-либо директорию, соответственно, изменив путь в .htaccess)
1
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 21:36  [ТС]
KOPOJI, окончательно запутался ..
Если допустить, что имя этой папки для файлов "/dirname/" и имя файла в этой папке "fddd.php"
то как нужно изменить :
Code
1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]
чтобы можно было открыть я уже даже не знаю "http://127.0.0.1/sitename/dirname/fddd" или "http://127.0.0.1/sitename/fddd" ? Подскажите, пожалуйста
По идее для меня будут нормальными оба варианта.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2013, 21:45
создаете директорию. В нее закидываете файлы, прописываете измененный путь в .htaccess (он должен быть в корневой директории!)
Code
1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ ИМЯ_СОЗДАННОЙ_ДИРЕКТОРИИ/$1.php [L]
Но в браузере вводите путь так, как будто они все находятся в корне сайта (т.е., чтобы файлы "не существовали" по данному адресу)
1
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22
10.07.2013, 21:53  [ТС]
KOPOJI, Спасибо !!! Заработало!!!
http://127.0.0.1/sitename/fddd/
Результат:
привет
--
Ещё раз огромное спасибо! Да, ещё, наверно, стоит о такой проблеме в апач где-либо закрепить инфу, что порой удобно запихнуть файлы в папку и применить этот код в .htaccess)
0
10.07.2013, 21:55

Не по теме:

да, возможно, как нибудь допишу в Руководство по настройке ЧПУ (Rewrite)..

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.07.2013, 21:55
Помогаю со студенческими работами здесь

Убрать расширение .php в .htaccess
Здравствуйте! Я понимаю, что данная тема давно заезженная. Но все же, актуальна для меня.. Нужно в .htaccess поменять ВСЕ php страницы,...

Убрать расширение php в адресной строке
Всем привет! Прочитал, что это можно сделать при помощи файла .htaccess. Создал файл в корневом каталоге сайта, т.е. там где лежат все...

Убрать точку и расширение php в переменной
Может запутанно написал тему, извините, вопрос: Есть к примеру код: $a=$_SERVER; echo $a; выдает к примерно такое:...

Отображение div-а на страницах сайта средствами php
Здравствуйте, такая проблема: Делаю вывод html кода средствами php на сайте вот так $url = $_SERVER; if ($url == '/video') { echo...

Не отправляются письма с сайта (PHP, Apache 2)
Есть проблема с отправкой писем с сайта, перепробовал первые 3 страниц выдачи яндекса и гугла, ничего не получается, с библиотекой jquery и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru