2011-05-03 55 views
0

我使用Win 7.我下載了XAMPP 1.7.1。我必須將http:// localhost /更改爲http://localhost:8080/,因爲端口80已經很忙。在httpd.conf中,我將AllowOverride更改爲All。本地php網站無法在XAMPP上運行。可能的modrewrite問題?

我運行一個本地網站(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報告服務)的軟件。然後,我在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> 

不知道接下來要嘗試什麼。有任何想法嗎?

感謝 Vaciliy

回答

0

你可以嘗試加入鹼網址的每一頁的標題:

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

使用mod_rewrite時,我會親自使用完整路徑,而不是相對的,那麼你就不會需要上述解決方案。

+0

謝謝。我改回本地主機:80,但這並沒有解決問題。 – Vasiliy 2011-05-06 02:01:34

0

確保您的路徑中包含一個前導斜槓。

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

不等同於

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

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

檢查這是否有所幫助。

+0

我在更改回localhost:80後更新了上述問題。鏈接到css文件似乎是正確的。 – Vasiliy 2011-05-06 02:00:37

0

我在此添加此內容以貢獻或幫助OP,因爲我無法添加評論。 Vasiliy檢查你的站點目錄中是否有htaccess文件,前一段時間我有同樣的問題與圖像和css文件,它是在htaccess文件上的mod重寫。