Lamp服务器没有显示没有扩展名的文件

时间:2016-11-07 12:44:11

标签: virtualhost lamp

我遇到一个奇怪的问题,我在灯堆中创建了一个vhost。问题是,当我打开vhost网站www.domain.com时,主页加载没有任何问题。

但是当我使用导航栏打开另一个页面时,我得到一个" 404 NOT FOUND"即www.domain.com/about

但是,只要我手动填充文件的扩展名,页面就会加载。 www.domain.com/about.php

我该如何解决这个问题。我正在使用.htaccess来隐藏文件的扩展名。

注意: 1)所有其他本地文件正常运行,即我有一个wordpress网站工作正常(这意味着mysql数据库不会导致错误)

2)vhost设置正确bcus终端在启用vhost时没有显示任何错误。

但是wamp中的vhost在我的Windows 8.1专业版中没有给我任何问题。

编辑: .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 个答案:

答案 0 :(得分:0)

您需要启用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。*的文件,并有效地伪造一个类型地图   它命名所有这些文件,为它们分配相同的媒体类型和   如果客户要求其中一个,它将具有内容编码   他们的名字。然后它选择与客户的最佳匹配   要求。

答案 1 :(得分:0)

感谢@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>