.htaccess在远程服务器上工作,但不能在本地主机上工作。 在本地主机上获取404错误

我的问题:

当我访问本地主机的网站不起作用。 它显示从网站的一些文本,但似乎服务器无法find任何其他文件。 这里是萤火虫的错误摘录:

"NetworkError: 404 Not Found - localhost/css/popup.css" "NetworkError: 404 Not Found - localhost/css/style.css" "NetworkError: 404 Not Found - localhost/css/player.css" "NetworkError: 404 Not Found - localhost/css/ui-lightness/jquery-ui-1.8.11.custom.css" "NetworkError: 404 Not Found - localhost/js/jquery.js" 

看来我的服务器正在寻找错误的地方的文件。 例如,localhost / css / popup.css实际上位于localhost / app / webroot / css / popup.css中。

我有我的网站安装在远程服务器上具有相同的确切configuration,它工作得很好。 我只是有这个问题试图运行我的笔记本电脑在本地的网站。 我编辑我的VirtualHosts文件DocumentRoot和/home/user/public_html/site.com/public/app/webroot/,这减less了一些错误,但我觉得这是错误的,有点黑客,因为我没有使用这些设置在我的生产服务器上工作。

我想要做的最后一个笔记是,该网站使用dynamicurl。 我不知道这与它有什么关系。 例如,在生产服务器上的URL是:site.com/#hello/12321。

我在做什么:

我的笔记本电脑上安装了一个LAMP服务器,它在Ubuntu 11.10上运行。

我已经启用mod_rewrite:

 sudo a2enmod rewrite 

然后我编辑我的虚拟主机文件:

 <VirtualHost *:80> ServerName localhost DirectoryIndex index.php DocumentRoot /home/user/public_html/site.com/public <Directory /home/user/public_html/site.com/public/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 

然后我重新启动apache。 我的网站正在使用cakePHP。 这是网站的目录结构:“/home/user/public_html/site.com/public”包含:

 index.php app cake plugins vendors 

这些是我的.htaccess文件:

/home/user/public_html/site.com/public/app/.htaccess:

 <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] </IfModule> 

/home/user/public_html/site.com/public/app/webroot/.htaccess:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] </IfModule> 

你的app /和app / webroot dirs中有.htaccess,但是你的根目录没有。

你应该有文件:/home/user/public_html/site.com/public/.htaccess

 RewriteRule ^$ app/webroot/ [L] RewriteRule (.*) app/webroot/$1 [L] 

要么

改变你的文件根目录

 DocumentRoot /home/user/public_html/site.com/public/app/ 

这两个答案都假设public / index.php没有在URI上运行某种高级路由。 嵌套的.htaccess文件做重写是凌乱的。

您的网站位于/home/user/public_html/site.com/public

它包含: index.php app cake plugins vendors

而你的根.htaccess文件是:

 RewriteRule ^$ webroot/ [L] RewriteRule (.*) webroot/$1 [L] 

所以这意味着:无论如何,请转到安装中的webroot文件夹。

但是我没有看到任何webroot文件夹。 我错过了什么吗?

我看不到日志。 Firebug不是Apache错误日志 。 在这种情况下,Apache的错误日志是没有任何替代的,所以启动错误日志并检查error.log

http://httpd.apache.org/docs/2.2/logs.html#errorlog

在你的笔记本电脑上,你有没有AllowOverride设置在你的apacheconfiguration有些允许使用.htaccess文件?

请参阅: http : //httpd.apache.org/docs/2.2/mod/core.html#allowoverride

详情。

或者只需将以下内容添加到您的httpd.conf然后重新启动apache:

 AllowOverride All 

如果这有帮助,那么检查出上面的链接并改进AllowOverride指令。 如果没有帮助,那么取出你添加的AllowOverride (但是留在已经存在的任何一个连接器中)并且重新启动apache。