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

Я получаю странную проблему я создал vhost в стеке лампы. Проблема в том, что когда я открываю сайт vhost www.domain.com Домашняя страница загружается без каких-либо проблем.

Но когда я использую навигационную панель, чтобы открыть другую страницу, Я получаю» 404 не найден » i.e www.domain.com/about

Но как только я ставлю расширение файла вручную, страница загружается.
www.domain.com/about.php

Как я могу решить эту проблему. Я использую .htaccess, чтобы скрыть расширение файла.

Отмечать:
1) все другие локальные файлы работают правильно, т. е. у меня есть сайт wordpress, который работает хорошо (это означает, что MySQL db не вызывает ошибку)

2) vhost установлен правильно bcus терминал не показал никакой ошибки, когда vhost был включен.

Но vhost в wamp не дает мне какой-либо вопрос в моей windows 8.1 pro.

Редактировать :
Code in .htaccess, чтобы скрыть расширение это работает в моем Windows pc без каких-либо проблем.

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ 

I am getting a weird issue i created a vhost in lamp stack. The problem is that when I open the vhost site www.domain.com the home page loads without any issue.

But when I use the nav bar to open another page I get a "404 NOT FOUND" i.e www.domain.com/about

But as soon as I put the extension of the file manually the page loads. www.domain.com/about.php

How can I solve this issue. I am using .htaccess to hide the extension of the file.

Note: 1) All the other local file running properly i.e. I have a wordpress site that works fine (This means the mysql db is not causing the error)

2) The vhost is set properly bcus the terminal did not show any error when the vhost was enabled.

But the vhost in wamp does not give me any kind of issue in my windows 8.1 pro.

Edit : Code in .htaccess to hide extension this works in my windows pc without any problem.

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

EDIT -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>

Still did not worked.

.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$

I am getting a weird issue i created a vhost in lamp stack. The problem is that when I open the vhost site www.domain.com the home page loads without any issue.

But when I use the nav bar to open another page I get a "404 NOT FOUND" i.e www.domain.com/about

But as soon as I put the extension of the file manually the page loads.
www.domain.com/about.php

How can I solve this issue. I am using .htaccess to hide the extension of the file.

Note:
1) All the other local file running properly i.e. I have a wordpress site that works fine (This means the mysql db is not causing the error)

2) The vhost is set properly bcus the terminal did not show any error when the vhost was enabled.

But the vhost in wamp does not give me any kind of issue in my windows 8.1 pro.

Edit :
Code in .htaccess to hide extension this works in my windows pc without any problem.

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

EDIT -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>

Still did not worked.

.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 ответа

  1. Необходимо включить параметры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:

    Эффект мультивизы выглядит следующим образом: если сервер получает
    запрос для /some / dir / foo, если для /some/ dir включено несколько просмотров, и
    /some/dir/foo не существует, тогда сервер читает каталог
    поиск файлов с именем foo.* , и эффективно подделывает карту типа
    какие имена всех этих файлов, присваивая им одинаковые типы носителей и
    content-encodings это было бы, если бы клиент попросил один из
    их поименно. Затем он выбирает наилучшее соответствие клиенту
    требования.

  2. Спасибо @Cyclone за помощь

    Этот пост помог мне решить эту проблему
    https://askubuntu.com/questions/233046/how-to-give-my-user-permission-to-add-edit-files-on-local-apache-server

    Сообщение выше поможет запустить сервер Apache в качестве вошедшего в систему пользователя.

    Давать права на использование .htaccess —

    Во-первых, вы должны убедиться, что ваше имя пользователя включено в группу www-данных. Если нет, вы можете добавить свое имя пользователя как www-группу данных

    sudo adduser $USER www-data
    

    После этого вы должны сменить владельца /var / www на свое имя пользователя

    sudo chown $USER:www-data -R /var/wwws
    

    А также не забудьте добавить этот код в apache2.conf

    <Directory /var/www/ProjectRootDirectory>
    AllowOverride All
    </Directory>