我试图在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,没有运气。
此外,一切都在生产中很好,所以我不想改变结构。
非常感谢任何帮助,谢谢。
答案 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">
指向:
/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\
目录中)。从
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
访问本地副本。