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

У меня странная проблема, я создал 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.* и эффективно подделывает карту типов, которая называет все эти файлы, присваивая им те же типы медиа и кодировки контента, которые были бы у него, если бы клиент запросил один из них по имени. Затем он выбирает лучшее соответствие требованиям клиента.

Другие вопросы по тегам