我遇到一个奇怪的问题,我在灯堆中创建了一个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>
仍然没有奏效。
答案 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
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>