php - 使用 .htaccess 重定向所有媒体请求(css、js 和图像)

标签 php regex .htaccess

我正在构建一个 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.jshttp://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/

相关文章:

php - 将 PHP 与图表和 MySQL 数据结合使用

php - 使用 PHP PDO 更新复选框的数据库值,但不更新所有复选框

c++ - 使用 QRegularExpression 提取完整的句子

javascript - angular 在输入字段上的 $parsers 在初始输入时遇到困难

php - PHP 路由之谜

PHP 重定向用户并设置 403 header

php - 制作多个数组的每个组合,而不重复每个数组中的项目

php - Bootstrap 在奇列上循环一行

regex - Perl 正则表达式可以用于什么类型的语言?

php - .htaccess SEO 动态网址不起作用