如何在本地使用XAMPP设置F3?

时间:2016-04-29 14:40:54

标签: php apache .htaccess xampp fat-free-framework

我试图在C:\ xampp \ htdocs \ abc中使用XAMPP在本地运行Fat Free PHP项目 我的问题是我的CSS,图像或链接都不起作用。我添加了一个.htaccess文件:

RewriteEngine On
RewriteBase /abc/
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /abc/index.php [L,QSA]

似乎有点帮助我的index.php加载但没有css和图像加载。此外,当我单击任何链接时,我得到404,并且该URL不会路由到我的/abc目录。

我尝试了无数的RewriteRules和RewriteConds,没有运气。

此外,一切都在生产中很好,所以我不想改变结构。

非常感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:3)

尝试使用此.htaccess

RewriteEngine On
RewriteBase /abc/

# skip all files and directories from rewrite rules below
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule (.+\.(?:gif|png|jpe?g|css))$ /abc/$1 [NC,L]
RewriteRule .* /abc/index.php [L]

答案 1 :(得分:0)

您似乎遇到路径问题。

根据您的评论,我认为您的资产和链接是这样写的:

<link rel="stylesheet" href="/bootstrap.css" />
<img src="/mypic.png"/>
<a href="/what/ever.html">click</a>

这些链接是绝对(请注意前导/)。这意味着他们指向服务器根目录,所以:

  • bootstrap.css解析为myserver.tld/bootstrap.css
  • mypic.png解析为myserver.tld/mypic.png

他们正在您的生产网站上工作,可能是因为项目托管在服务器根目录上。

但是在本地服务器上,所有内容都从/转移到/abc/,导致链接解析错误。所以你有两个解决方案:

解决方案1 ​​

使用BASE预转所有链接。如果您正在使用框架模板引擎,那么将提供:

<link rel="stylesheet" href="{{ @BASE }}/bootstrap.css" />
<img src="{{ @BASE }}/mypic.png"/>
<a href="{{ @BASE }}/what/ever.html">click</a>

解决方案2

通过在/abc/部分添加<base>标记,通知浏览器应该相对于<head>解析所有链接:

<base href="http://myserver.tld/abc/">

<base href="/abc/">

注意:尾部斜杠很重要。整个字符串被视为所有链接的前缀。

<强>备注

这两个解决方案并非100%等效,因为第二个解决方案会影响锚链接。确实,<a href="#foo">指向:

  • 第一个解决方案的当前页面
  • 带有第二个解决方案的基URI(即/abc/#foo

答案 2 :(得分:0)

我的建议是创建一个VirtualHost。它会影响其他Apache配置文件,但我假设您只想在本地重新创建环境(您有完全的自主权和自定义权限),因此不需要更改应用程序的代码。

在任何文本编辑器中打开Windows C:\WINDOWS\system32\drivers\etc\hosts文件,但具有管理员权限并添加以下行:

127.0.0.1   localcopy.tld

这将告诉系统该主机应由本地服务器处理。

现在找到您的hhtpd-vhosts.conf(它应该在C:\xampp\apache\conf\extra\目录中)。从

行删除hashmark
NameVirtualHost *.80

并插入以下行:

<VirtualHost *:80>
  DocumentRoot C:/xampp/htdocs/abc
  ServerName localcopy.tld
</VirtualHost>

这将告诉Apache当处理localcopy.tld请求的请求时,它应该找到C:/xampp/htdocs/abc目录中的文件。

最后,您需要修改Apache主配置文件以允许虚拟主机。 在文本编辑器中打开主Apache配置文件httpd.conf。该文件位于C:\xampp\apache\conf\。向下滚动到末尾的Supplemental配置部分,找到以下部分(第500行左右)。删除注释行的哈希标记:

Include conf/extra/httpd-vhosts.conf

应该这样做。

更深入的解释is available here

所有这些都可让您通过http://localcopy.tld访问本地副本。