Сервер лампы не показывает файл без расширения
У меня странная проблема, я создал vhost в стеке ламп. Проблема в том, что когда я открываю сайт vhost www.domain.com, домашняя страница загружается без каких-либо проблем.
Но когда я использую панель навигации, чтобы открыть другую страницу, я получаю "404 НЕ НАЙДЕНО", т.е. www.domain.com/about
Но как только я ставлю расширение файла вручную, страница загружается. www.domain.com/about.php
Как я могу решить эту проблему. Я использую.htaccess, чтобы скрыть расширение файла.
Примечание: 1) Все остальные локальные файлы работают нормально, т.е. у меня есть WordPress сайт, который работает нормально (это означает, что mysql db не вызывает ошибку)
2) Vhost настроен правильно, потому что терминал не показывал никакой ошибки, когда Vhost был включен.
Но Vhost в Wamp не дает мне никаких проблем в моем Windows 8.1 Pro.
Изменить: Код в.htaccess, чтобы скрыть расширение, это работает в моем Windows PC без каких-либо проблем.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
РЕДАКТИРОВАТЬ -2
<VirtualHost *:80>
<Directory /var/www/stab-website>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
DocumentRoot "/var/www/stab-website"
ServerName stab-site.com
ServerAlias www.stab-site.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Все еще не работал.
2 ответа
Спасибо @Cyclone за вашу помощь
Этот пост помог мне решить эту проблему https://askubuntu.com/questions/233046/how-to-give-my-user-permission-to-add-edit-files-on-local-apache-server
Пост выше поможет запустить сервер Apache как зарегистрированный пользователь.
Чтобы дать права на использование.htaccess -
Во-первых, вы должны убедиться, что ваше имя пользователя включено в группу www-data. Если нет, вы можете добавить свое имя пользователя в качестве www-data group
sudo adduser $USER www-data
После этого вы должны изменить владельца / var / www на ваше имя пользователя.
sudo chown $USER:www-data -R /var/wwws
А также не забудьте добавить этот код в apache2.conf
<Directory /var/www/ProjectRootDirectory>
AllowOverride All
</Directory>
Вам необходимо включить MultiViews
опции:
<VirtualHost *:80>
<Directory /var/www/htdocs>
Options Indexes FollowSymLinks MultiViews
</Directory>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/var/www/htdocs"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
</VirtualHost>
Это может быть сделано в вашем httpd.conf
файл, в файле конфигурации для вашего виртуального хоста или в .htaccess
файл.
Вы также должны убедиться, что mod_negotiation
модуль включен. Это можно сделать, запустив:
sudo a2enmod negotiation
Вам также может понадобиться проверить, что конфигурация вашего виртуального хоста в порядке, это можно сделать из терминала, используя:
apache2ctl -t
После этого вам нужно перезагрузить сервер:
sudo service apache2 restart
От documentation
:
Эффект MultiViews заключается в следующем: если сервер получает запрос для / some / dir / foo, если / some / dir имеет включенные MultiViews и / some / dir / foo не существует, то сервер читает каталог, ища файлы с именем foo.* и эффективно подделывает карту типов, которая называет все эти файлы, присваивая им те же типы медиа и кодировки контента, которые были бы у него, если бы клиент запросил один из них по имени. Затем он выбирает лучшее соответствие требованиям клиента.