本篇文章给大家谈谈一种避免ApacheAliaspath包含CSS资源之类的HTML资源的方法,同时本文还将给你拓展04-webpack打包css资源、ApacheCamel调度到本地JaxRs资源实
本篇文章给大家谈谈一种避免Apache Aliaspath包含CSS资源之类的HTML资源的方法,同时本文还将给你拓展04- webpack打包css资源、Apache Camel调度到本地JaxRs资源实现、Apache proxypass无法解析图像和CSS等资源的url、Apache下开启SSI配置使html支持include包含的方法等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 一种避免Apache Aliaspath包含CSS资源之类的HTML资源的方法
- 04- webpack打包css资源
- Apache Camel调度到本地JaxRs资源实现
- Apache proxypass无法解析图像和CSS等资源的url
- Apache下开启SSI配置使html支持include包含的方法
一种避免Apache Aliaspath包含CSS资源之类的HTML资源的方法
这里有一个问题,因为我目前的解决scheme是不是真的让我满意以下问题:
我有一个自己的PHP框架在开发MVC模式。 而我的路由器工作完美,所有,但我有一个问题,我找不到解决scheme。
那么我路由每个传入的请求index.PHP文件位于我的框架的基path。 当然,在包含css的时候使用相对path是没问题的,例如:
<link rel="stylesheet" type="text/css" href="style/include/css/style.css" />
这在浏览器中是完美的。 当然,我在URL中input的内容并不重要,因为每个请求都会按照上面所述的方式redirect到索引,从而使合理的路由成为可能。
Apacheredirect问题.htaccess中
用SetEnv重写
URL重写(SLUG)和URLredirect(htaccess)
删除index.PHP url重写.htaccess
PHP的htaccessredirect的URL与查询string从大写到小写
然而,当我的url包含多个斜杠看起来像子文件夹,例如:“/手册/细节/ 1_2”,然后我得到一个正常的路由过程,但浏览器找不到的CSS文件,除非我加“../” “在我的url映射回我的基path。
例如,对于上面的URL,这将工作,而不是:
<link rel="stylesheet" type="text/css" href="../../style/include/css/style.css" />
我的解决scheme:
我在我的Routing类中编写了一个PHP函数,用于确定所需的“../”模式的数量,并且在执行资源之前总是先执行该函数,以随时构build精确的path。
例:
<link rel="stylesheet" type="text/css" href="<?=Router::getInstance()->getsubdirectoryPrefix()?>style/include/css/style.css" />
不用说,这是非常不方便的,如果你忘记放置这个function,也很糟糕。 如果你的路线改变了,或者你忘记了你在一个子目录下,你会想知道为什么你的资源找不到。
我也知道如何在Apache的虚拟主机configuration中添加一个别名(如Alias / public style /),但是我希望find另一个项目和PHP的内部方式,而不需要一个不方便的废话,例如一直粘贴别名函数设置一个虚拟主机选项,这样框架可以保持轻量级,不需要任何讨厌的外部选项,如修改虚拟主机。
我很想听听你的解决scheme,最好是.htacces – 哦,通过谈论它,我离开我的.htaccess代码在这里:
RewriteEngine On Options -Indexes RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.PHP [L]
预先感谢您的帮助〜
如何从根redirect到子文件夹,重写子文件夹链接看起来像根,然后在htaccess中添加一些例外?
.htaccess的子域名重写
仅在文件不存在时重写
Codeigniter URL重写删除index.PHP
我怎样才能使用mod_rewrite删除后的一切? (问号)在一个URL?
您必须使用绝对路径,而不是相对路径为您的HTML链接(CSS,JavaScript,图像等)。
例如:
<link rel="stylesheet" type="text/css" href="/style/include/css/style.css" />
引导斜杠( style之前)意味着从文档根文件夹开始,然后进入style文件夹,依此类推…(如果文件夹不在根文件夹中,则可能有另一个前缀目录)
你有一些问题,因为你的一些规则可以创建虚拟目录(例如: http://domain.com/some/directory/subdirectory/etc/ : http://domain.com/some/directory/subdirectory/etc/ )。
另外,在你的htaccess中,使用前导斜杠(或RewriteBase )
Options -Indexes RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* /index.PHP [L]
或者(都是一样的)
Options -Indexes RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .* index.PHP [L]
04- webpack打包css资源
- 下载两个loader插件
npm i css-loader style-loader -D
- css-loader 的作用是处理css中的 @import 和 url 这样的外部资源
- style-loader 的作用是把样式插入到 DOM中,方法是在head中插入一个style标签,并把样式写入到这个标签的 innerHTML里,就是内联样式
- 如果rules只用一个loader, 就use:[] 写成loader: “css-loader”
- 使用插件
const {resolve} = require("path") //从path中接收resolve方法
const htmlWebpackPlugin = require("html-webpack-plugin") //引入html打包插件
module.exports={
entry: {
vendor: ["./src/js/jq.js","./src/js/common.js"],
index: "./src/js/index.js",
cart: "./src/js/chart.js"
},
output: {
path: resolve(__dirname, "./build"), //输出路径
filename: "[name].js" //输出文件名
},
mode: "development", //webpack使用相应的模式配置
module: { //css打包规则
rules: [{
test: /\.css$/, //把项目中所有以.css结尾的文件打包,插入到html里
use: ["style-loader","css-loader"]
// use数组中loader执行顺序:从右到左,从下到上 依次执行
//style-loader 创建style标签,将js中的样式资源插入进行,添加到head中生效
//css-loader 将css文件变成commonjs模块加载js中,里面内容是样式字符串
}]
},
plugins: [
//默认创建一个空的html,目的就是自动引入打包的资源js/css
new htmlWebpackPlugin({ //引用插件
template: "./src/index.html", //index.html不用加script,也可以自动引入js文件
filename: "index.html", //输出的打包的文件名
chunks: ['index','vendor'],
// 压缩HTML代码
minify: {
//移除空格
collapseWhitespace: true,
//移除注释
removeComments: true
}
}),
new htmlWebpackPlugin({ //引用插件
template: "./src/chart.html", //index.html不用加script,也可以自动引入js文件
filename: "chart.html", //输出的打包的文件名
chunks: ['cart','vendor']
})
]
}
- 目录结构
style.css
body {
margin: 0;
padding: 0;
}
p {
color: red;
font-size: 25px;
}
h1 {
color: blue;
font-size: 88px;
}
.Box {
width: 100px;
height: 150px;
background-color: bisque;
color: blueviolet;
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>商城首页~~~~~~</h1>
<p>打包css</p>
<divhttps://www.jb51.cc/tag/Box/" target="_blank">Box">
this is a Box1
</div>
<divhttps://www.jb51.cc/tag/Box/" target="_blank">Box2">
this is a Box2
</div>
<divhttps://www.jb51.cc/tag/Box/" target="_blank">Box3">
this is a Box3
</div>
</body>
</html>
index.js
//引入css文件(commonjs)
require("../css/style.css")
//也可以使用ES6的模块引入
//import "../css/style.css"
console.log("首页专用js文件");
- 执行
webpack
css以内联样式插入到html文件里
Apache Camel调度到本地JaxRs资源实现
这实际上是一个非常棘手的问题。一方面,即使您在Google上搜索,也无法获得直接答案。经过网络冲浪的永恒,感觉骆驼路线通过转发到新服务来调用jx-rs资源方法似乎是大地的法则。
是的,这就像to("bean:MyJxRsImplemantion")
旨在忽略jax-rs注释一样。因此,我认为这是不可能的。抱歉。
Apache proxypass无法解析图像和CSS等资源的url
如何解决Apache proxypass无法解析图像和CSS等资源的url?
经过大量的反复试验,我找到了解决问题的两种不同方法。
- 使用mod_rewrite和proxypass的一些更改:
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /app http://localhost:8080/ui/
ProxyPassReverse /app http://localhost:8080/ui/
#since in java web app the context started with /ui the js src had /ui in the beginning
#this resulted in 404 so I had to rewrite all request to /ui to forward to /app
RewriteEngine on
RewriteRule "^/ui(.+)" "/app$1" [R,L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- 在webapp文件夹中创建到已部署应用程序的链接/快捷方式,并将shorcut命名为app在linux中,命令是(来自webapp文件夹中)
ln -s ui app
现在,apache配置为:
<VirtualHost *:80>
ProxyPreserveHost On
<Location /app>
ProxyPass ajp://localhost:8019/app/
ProxyPassReverse ajp://localhost:8019/app/
SetoutputFilter proxy-html
ProxyHTMLExtended On
ProxyHTMLURLMap /app /app
RequestHeader unset Accept-Encoding
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
在第一种解决方案中,重写mod导致请求在重定向到正确的url之前返回304。这就是默认情况下的工作方式。
在第二种解决方案中,由于两个处理程序都是相同的(/ app),因此无需重新定向,并且URL正确映射。
解决方法
我需要将路径映射到我的tomcat Web应用程序。我为此使用了proxypass。这是apache2中的当前配置
<VirtualHost *:80>
ServerName localhost:80
ProxyPass /app http://localhost:8088/ui/
ProxyPassReverse /app http://localhost:8088/ui/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这是从tomcat获取HTML,但是形成的css
url错误。而不是http://localhost/app/css/style.css
url被映射为http://localhost/ui/css/style.css
。
我尝试使用重写,但是没有用。
RewriteEngine on
RewriteRule ^/ui/ /app/
我需要找到正确的方法来更正URL。任何帮助将不胜感激!提前致谢。
Apache下开启SSI配置使html支持include包含的方法
写页面的同学通常会遇到这样的烦恼,就是页面上的 html 标签越来越多的时候,寻找指定的部分就会很困难,那么能不能像 javascript 一样写在不同的文件中引入呢?答案是有的,apache 能做到。
举个简单的例子,比如有如下的 html 文件(命名为 index.html):
<input type=''text'' /> <input type=''button'' value=''press'' />
一个简单的文本框和按钮,我现在想把按钮部分的 html 写在另一个 .html 的文件中(比如说叫 btn.html)然后引入到 index.html 中,要怎么做呢?
1、加载 ssi 模块
首先要加载 ssi 模块。打开 apache 的配置文件 httpd.conf,这个文件应该都已经很熟悉了,前面的文章中多次提到。找到这么一行 LoadModule ssl_module modules/mod_ssl.so,把前面的注释(#)去掉。
2016.01.11 更:
经本地测试,此步骤并不是必须的,多谢 whuper 指出。
2、添加需要的文件类型
同样在 httpd.conf 文件下找到如下两行代码:
AddType text/html .shtml AddOutputFilter INCLUDES .shtml
有注释的话一样去掉注释。因为使用 ssi 技术的默认文件名为 .shtml,所以我们需要在配置文件中对 .shtml 后缀名进行设置,并按自己的需求设置需要对 ssi 技术进行解析的文件类型设置。
比如这里我要用 .html 的文件进行操作,所以可以在上面两行代码末添加,比如这样:
AddType text/html .shtml .html AddOutputFilter INCLUDES .shtml .html
3、添加 INCLUDES
还是在 httpd.conf 文件中,找到这样一行 Options Indexes FollowSymLinks
,在后面添加 INCLUDES,变成这样:
Options Indexes FollowSymLinks INCLUDES
需要注意的是,ssi 可以利用 shell 来执行命令,因此这个功能是有危险的,它会执行任何包含在 exec 标记中的命令,如果你的用户有权限修改你的网页内容,建议把该功能关闭。当然你还可以加上IncludesNOEXEC 参数,来关闭 exec 功能,同时又保留 SSI 。此时改为: Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC
4、重启 apache
最后一点,重启 apache 千万不能忘记,有些童鞋刚开始配置 apache 的时候,经常会说怎么不起作用啊,很多时候就是忘记重启了。
5、实践
通过这样的配置我们就能在 html 页面中引入 html 文件了,比如这样:
<input type=''text'' /> <!--#include virtual="btn.html" -->
也可以用 file
参数:
<input type=''text'' /> <!--#include file="btn.html"-->
有什么区别呢...
include 元素能按 file 属性或 virtual 属性判断应该包含的文件。file 属性是一个相对于当前目录的文件路径,即不能是一个绝对路径(以 "/" 开头)或包含 "../" 的路径,也就是说被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。virtual 属性可能更有用,它是一个相对于被提供的文档的URL ,可以以 "/" 开头,但必须与被提供的文档位于同一服务器上,virtual 文件名是 Web 站点上的虚拟目录的完整路径。
通俗地说,virtual 相当于绝对路径(从服务器根目录出发),而 file 相当于相对路径(而且文件还不能在上级目录)。所以一般用 virtual 就 ok 了。
参考:
让Apache支持SHTML(SSI)的配置方法
- Apache默认是不支持SSI如何给Apache增加SSI支持
- apache SHTML网页SSI使用详解
- 让Apache支持cgi、SSI、shtml的配置方法
- HTML静态页面引入公共html文件(ssi服务器端指令详解)
- Apache、Nginx 服务配置服务器端包含(SSI)
- phpstudy apache开启ssi使用详解
关于一种避免Apache Aliaspath包含CSS资源之类的HTML资源的方法的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于04- webpack打包css资源、Apache Camel调度到本地JaxRs资源实现、Apache proxypass无法解析图像和CSS等资源的url、Apache下开启SSI配置使html支持include包含的方法等相关知识的信息别忘了在本站进行查找喔。
本文标签: