本地php站点不能在XAMPP上运行。可能的modrewrite问题?

时间:2011-05-03 00:27:58

标签: php apache mod-rewrite xampp

我正在使用Win 7.我下载了XAMPP 1.7.1。我不得不将http:// localhost /更改为http://localhost:8080/,因为端口80已经忙了。在httpd.conf中,我将AllowOverride更改为All。

我运行本地网站(php 4.2和MySQL)。网站的根目录(位于E:\ xampp \ htdocs \ test)包含一个htaccess文件。

我检查了php信息,看是否加载了mod_rewrite。 htaccess文件也正常工作并正在被接收(我试图在htaccess文件中输入无意义的文本并在此之后收到服务器错误,这确认了htaccess没问题。)

该网站的主页加载正常,但它似乎没有拿起CSS或JavaScript文件。显示了具有直接URL的主页文本和图像,但是未应用任何CSS样式。此外,任何指向其他页面的链接都会将我带到http:// localhost / xampp /.

我检查了错误日志并显示了这个错误(有很多这样的行):

[Sun May 01 22:26:57 2011] [error] [client 127.0.0.1] File does not exist: E:/xampp/htdocs/scripts, referer: http://localhost:8080/test/.

htaccess文件如下(此文件在删除服务器上运行良好):

RewriteEngine On

RewriteBase /

<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2015 20:00:00 GMT"
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>

Header unset ETag
FileETag None

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|rar|zip|pdf)$ no-gzip dont-vary
<IfModule mod_headers.c>
Header append Vary User-Agent
</IfModule>
</IfModule>

<IfModule mod_expires.c>

# enable expirations
ExpiresActive On
ExpiresByType image/gif "access plus 7 days"
ExpiresByType image/jpeg "access plus 7 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/x-shockwave-flash "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
ExpiresByType text/javascript "access plus 7 days"
ExpiresByType image/png "access plus 7 days"
<FilesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf)$">
Header append Cache-Control "public"
</FilesMatch>
<FilesMatch "\.(js|css|swf)$">
ExpiresDefault "access plus 7 days"
Header append Cache-Control "public"
</FilesMatch>
</IfModule>

AddEncoding gzip .gz
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [QSA,L]

#RewriteRule favicon.ico images/favicon.ico [NC,L]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
#php_flag magic_quotes_gpc Off

有关为何发生这种情况的任何想法?

由于 瓦西里

更新: 我和xampp玩了一点,最后决定删除阻塞端口80的软件(sql报告服务)。然后我将参考从localhost:8080更改为apache配置文件中的localhost:80。

不幸的是,这并未解决问题。

例如,生成的主页将在标题中显示以下内容:

<link href="http://localhost/test/styles/style.css" rel="STYLESHEET" type="text/css" />
<script type="text/javascript" src="http://localhost/test/scripts/jquery.json-2.2.min.js"></script>

链接指向我的硬盘驱动器上styles.css和jquery.js所在的位置。

同时,图像链接起作用,因为图像显示:

<div class="logo"><img src="http://localhost/test/images/logo.png" width="356" height="77" /></div>

网站的配置文件列出了适用于此问题的以下值:

<siteHost>http://localhost/test/</siteHost>
<database>mysql://root:@localhost/prod</database>

不确定下一步该尝试什么。有什么想法吗?

由于 Vaciliy

3 个答案:

答案 0 :(得分:0)

您可以尝试在每个页面的标题中添加基本网址:

<head>
<base href="http://localhost:8080/" />
</head>

在使用mod_rewrite时,我会亲自使用完整路径而不是相对路径,那么您将不需要上述解决方案。

答案 1 :(得分:0)

确保您的路径包含前导斜杠。

<link href="css/style.css" />

不等于

<link href="/css/style.css" />

<link href="./css/style.css" />

检查这是否有帮助。

答案 2 :(得分:0)

我在这里添加这个是为了贡献或帮助OP,因为我还不能添加评论。

Vasiliy检查你的网站目录中是否有任何htaccess文件,我刚才有同样的问题与图像和css文件有关,它是对htaccess文件的mod重写。