我正在构建一个 MVC 应用程序,但我在 html 中的 css 文件、js 和图像 路径方面遇到了一些问题...我得到了使用 <base>
的解决方案标签定义所有 html 文件遵循的路径,例如:<base href="http://localhost/mvc/>
, 只是来回安装 javascript 插件时遇到了一些问题,因为当我输入时,例如 href="#"
单击而不是执行任何操作,链接将我带到了用 <base>
定义的 URL标签将是 http://localhost/mvc/#
,我想知道如何将这些文件的所有“请求”重定向到子文件夹,例如:
<link rel="stylesheet" href="main.css">
<img src="images/img2.jpg" />
所有请求都指向一个子文件夹,例如PUBLIC,只需要在该public 中设置html 文件夹...
HTACCESS 文件:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
最佳答案
相对 URL,如 abc/def/file.js
在 html 文件中导致浏览器 (!!) 在其前面添加当前路径并发出请求。假设您正在浏览 http://domain.com/folder/file.html
结果将是 http://domain.com/folder/abc/def/file.js
.
<base>
标记只是通过不采用当前 URL 的基本路径,而是采用 base 中给出的值来更改此操作的引用点。这需要是绝对的。这就是事情通常变得更复杂的地方:尽量省略 base
一般!
#
不会改变任何东西,因为它是(此处缺失的)片段的开始。 http://doamin.com/file.js
和 http://doamin.com/file.js#
字面上与 #
相同应该只由浏览器而不是服务器解释。
此外,如果您的 MVC 实现正在执行 <a href='#' onclick='somejsfunction();' ...
这不会返回 false,您会重新加载页面,这会混淆您的 View 。
相反,尝试 <a href='#' onclick='somejavafunction();return false;' ...
这会阻止 href
免于被处决。
建议:不要制造困惑的 base
和 .htaccess
设置,从清晰的目录结构开始,到处都是相对路径。在适当的环境中,您不需要任何这些。
关于php - 使用 .htaccess 重定向所有媒体请求(css、js 和图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34464222/