【问题标题】:Local php site does not run on XAMPP. Possible modrewrite issue?本地 php 站点不在 XAMPP 上运行。可能的modrewrite问题?
【发布时间】:2011-08-17 08:35:24
【问题描述】:

我使用的是 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文件如下(这个文件在remove服务器上效果很好):

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 报告服务)。然后,我在 apache 配置文件中将引用从 localhost:8080 更改为 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>

不确定接下来要尝试什么。有什么想法吗?

谢谢 虚无

【问题讨论】:

    标签: php apache mod-rewrite xampp


    【解决方案1】:

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

    Vasiliy 检查您网站的目录中是否有任何 htaccess 文件,前段时间我在图像和 css 文件方面遇到了同样的问题,这是对 htaccess 文件的 mod 重写。

    【讨论】:

      【解决方案2】:

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

      &lt;link href="css/style.css" /&gt;

      不等于

      &lt;link href="/css/style.css" /&gt;

      &lt;link href="./css/style.css" /&gt;

      检查这是否有帮助。

      【讨论】:

      • 我在改回 localhost:80 后更新了上面的问题。指向 css 文件的链接似乎是正确的。
      【解决方案3】:

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

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

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

      【讨论】:

      • 谢谢。我改回 localhost:80,但这并没有解决问题。
      猜你喜欢
      • 2012-07-12
      • 2016-08-05
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      相关资源
      最近更新 更多