【问题标题】:Lamp server not showing file without extensionLamp 服务器不显示没有扩展名的文件
【发布时间】:2017-03-20 19:35:55
【问题描述】:

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

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

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

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

注意: 1)所有其他本地文件正常运行,即我有一个运行良好的 wordpress 站点(这意味着 mysql db 没有导致错误)

2) 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>

还是不行。

【问题讨论】:

  • 如果您将虚拟主机配置添加到您的问题中会很好。

标签: virtualhost lamp


【解决方案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:

MultiViews 的效果如下:如果服务器收到一个 请求 /some/dir/foo,如果 /some/dir 启用了 MultiViews,并且 /some/dir/foo 不存在,则服务器读取目录 查找名为 foo.* 的文件,并有效地伪造类型映射 它命名所有这些文件,为它们分配相同的媒体类型和 如果客户要求其中之一,它将具有的内容编码 他们的名字。然后它选择与客户的最佳匹配 要求。

【讨论】:

  • @RajendranNadar - 是的,您应该能够将其添加到您的 vhost 文件中,或者正如我上面所说,您也可以将其添加到 .htaccess 文件中 - 注意该指令必须在 &lt;Directory ...&gt; 块内。
  • Nope 对我不起作用.. 目录正在打开,但 .php 文件出错
  • @RajendranNadar - 你重启你的服务器了吗?另外,确保启用mod_negotiation 模块,即:sudo a2enmod negotiation
  • 是的,使用终端
  • @RajendranNadar - 您检查了mod_negotiation 模块是否已启用?运行sudo a2enmod negotiation
【解决方案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 组

sudo adduser $USER www-data

之后,您应该将 /var/www 的所有权更改为您的用户名

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

别忘了在 apache2.conf 中添加这段代码

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

【讨论】:

    猜你喜欢
    • 2015-12-06
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多