以下是这种情况。我有这样的目录结构:
根
----管理
------------的index.php
---- index.php文件
----图片
----样式表
---- JavaScript的
问题
页面的所有内容都是由index.php文件生成的,该文件根据数据库中给定的$_GET
变量加载内容。我在管理文件夹的index.php中有一些内容。因此,当页面的内容显示为tinymce时,图像和样式表等看起来很糟糕,因为他们试图获得类似images/image1.jpg
的内容。
我想要什么
我想创建一个.htaccess文件来解决这个问题(如果可能的话)。我想说的是,只要来自管理员文件夹(其中.htaccess文件将来)/images
这样的请求,就应该将其视为../images
。因为我不知道如何写.htaccess文件,这就是我寻求帮助的原因。
答案 0 :(得分:0)
根据您的评论,您所拥有的是相对URL,例如images/image1.jpg
,浏览器将相对于当前目录加载,而不是域的根。一般情况下,我建议您尽可能避免通过添加前导/
来创建此类链接,但我们感谢如果您有大量现有内容,则转换可能并不容易。
所以要明确的是,当/admin/index.php
上显示HTML时,images/image1.jpg
的图片来源会导致/admin/images/image1.jpg
的GET请求。因此,最简单(显然相当无用)的规则是:
RewriteRule admin/images/image1.jpg /images/image1.jpg
含义“当您看到此网址时,实际上会提供此网址”。请注意 - 有点讽刺的是 - 左侧没有前导/
;这是因为在.htaccess
内,相对于当前目录处理重写规则;在“真正的”配置文件中(在Apache启动时包含),该规则将具有前导/
。
显然,你想要概括,所以你需要一个非常简单的正则表达式来说“当你看到这样的URL时,实际上就像这样提供等效的URL”:
RewriteRule admin/images/(.*) /images/$1
(.*)
表示匹配任何长度的任何内容,并“捕获”它,$1
表示在捕获的第一个内容中替换。
还需要考虑的另一件事是,您是否希望两个URL只具有相同的内容(内部重写,这是上面将要做的)或者是否应该告诉浏览器加载“正确”的URL(a重定向),您可以通过在规则末尾添加[R=temp]
或[R=permanent]
来实现。一个优点是浏览器将看到URL相同,并且能够提供相同的缓存副本。
答案 1 :(得分:0)
如果您的网络服务器在* nix系统上运行,您应该可以在管理目录中使用符号链接。
ln -s ../images images
您可能必须允许网络服务器(假设为apache)遵循符号链接(可以在.htaccess中设置)。
您可能还想查看: .htaccess config with symbolic links and index files not working as expected