Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/88: Рейтинг темы: голосов - 88, средняя оценка - 4.58
 Аватар для Сергей Прокошин
0 / 0 / 0
Регистрация: 09.07.2013
Сообщений: 22

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

09.07.2013, 22:34. Показов 18081. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru