Wishlist 0 ¥0.00

使用Redirector插件解决googleapis公共库加载的问题

最近访问一些面向国外的网站总是会出现ajax.googleaips.com无法加载的情况.以下为加载stackoverflow时的情境:

图1 -无法加载的google公共库

问题的原因是谷歌没有在国内开放ajax公共库服务

使用Redirector解决公共库加载问题

Redirector这个插件的功能正如它的名字, 可以对网页中的内容进行重定向

外部样式表,外部脚本, 图片等均可以添加至作用范围

安装

Redirector目前支持Firefox、Chrome、Opera三款浏览器,可以前往对应浏览器的应用市场下载安装相应版本

熟悉Github的用户也可以直接前往项目主页上找下载链接:einaregilsson/Redirector

使用

注:如果你不希望手动设置,可以直接浏览“使用Import来导入设置”一节来使用导入来进行设置

下面以我使用的Firefox为例。

安装后工具栏中会出现Redirector的图标,点击弹出菜单

图2 -弹出菜单

菜单中包含启用/停用与编辑重定向规则两个按钮,这里我们点击第二个按钮进入设置页面来编辑重定向规则

图3 -设置页面

 点击‘Create new redirect’来新建重定向规则

图4 -编辑重定向规则

然后依次填写各项

  • Description中填写描述,这里我们填写Ajax来说明这条重定向规则应用于谷歌Aja公共库,当然你也可以随便填其他内容
  • Example URL中随便填写一个要应用重定向的URl, 这里我们使用 http://ajax.lug.ustc.edu.cn/ajax/libs/jquery/1.7.1/jquery.min.js
  • Include partten中填写用来识别要应用重定向的URl的表达式,这里我们填写 *ajax.lug.ustc.edu.cn*
  • Redirect to中填写欲重定向至的URL,这里我们填写 $1ajax.lug.ustc.edu.cn$2

图5 -依次填写各项

依次填写各项后Example result项会显示出将Example Url根据规则修改后的结果,这里显示出http://ajax.lug.ustc.edu.cn/ajax/libs/jquery/1.7.1/jquery.min.js,嗯,非常完美不是吗

关于国内谷歌公共库镜像ajax.lug.ustc.edu.cn

我们需要有一个可以提供相同服务的镜像来替换ajax.lug.ustc.edu.cn

之前国内常用的是360镜像ajax.useso.com, 不过最近挂掉了, 于是我在网上找到了另一个镜像ajax.lug.ustc.edu.cn

关于ajax.lug.ustc.edu.cn请查看这篇文章

关于Include partten中的' * '占位符与Redirect to中的' $ '符号

官方文档中的一句话

$1, $2, $3 in the redirect urls will match the text that the stars matched.

也就是说Redirect to中的$1、$2分别指代了Include partten中第一个、第二个‘ * ’星号所匹配的内容

我们的设置方法通俗的说就是把原Url中ajax.lug.ustc.edu.cn之前与之后的内容分别抓取下来,粘贴到ajax.lug.ustc.edu.cn前后, 形成新的网址

更多关于匹配规则的内容请查看关于正则表达式的教程

接下来点击'Show advanced options',显示高级选项来设置规则的应用范围

图6 -显示高级选项

在Apply to中可以选择规则的应用范围,默认勾选的是Main window一项,重定向地址栏。这里我们只勾选Script一项,将规则应用到外部脚本中

最后点击Save来保存,就会得到与图3一样的页面

再次加载文章开头提到的Stackoverflow网站

图7 -成功加载Stackoverflow网站

大功告成!

使用Import来导入设置

将以下代码随便复制到一个新文件中

{
    "createdBy": "Redirector v3.1.0",
    "createdAt": "2016-09-10T13:29:02.323Z",
    "redirects": [
        {
            "description": "Ajax",
            "exampleUrl": "http://ajax.lug.ustc.edu.cn/ajax/libs/jquery/1.7.1/jquery.min.js",
            "exampleResult": "http://ajax.lug.ustc.edu.cn/ajax/libs/jquery/1.7.1/jquery.min.js",
            "error": null,
            "includePattern": "*ajax.lug.ustc.edu.cn*",
            "excludePattern": "",
            "redirectUrl": "$1ajax.lug.ustc.edu.cn$2",
            "patternType": "W",
            "processMatches": "noProcessing",
            "disabled": false,
            "appliesTo": [
                "script"
            ]
        }
    ]
}
 

之后使用设置页面的Import功能导入该文件就可以加载与上文相同的重定向规则


 

如果你喜欢本文,请点击下方推荐按钮

解决 Joomla\Filesystem\File::delete: Failed deleting inaccessible file

这两天,连续有朋友向我咨询Joomla\Filesystem\File::delete: Failed deleting inaccessible file e073973564324817a97a08fec366b16e这个问题,最开始以为是简单的权限问题,但实际的发现,后台的目录权限都是正常,因此,就决定研究一下,看看这个问题的具体原因。由于我本地的服务器从来没有遇到过此类问题,因此,本案例使用的是一个购买D计划朋友的测试环境,为阿里云的虚拟主机。

1,问题描述


用户购买了D计划的全站包,然后部署到阿里云的虚拟主机上,一切都正常,但是当修改全局设置,点击保存的时候程序提示错误Joomla\Filesystem\File::delete: Failed deleting inaccessible file e073973564324817a97a08fec366b16e。错误截图如下:

delete_error.png

2,问题分析


上面的错误已经很明显的提示不能删除文件,那么肯定是文件的权限不够,并且看这个文件的文件名,应该是一个临时文件。那么就进一步的确定,可能是tmp这个临时文件的写权限没有。因此,第一步,我的检查就是登录后台,在全局设置->文件夹权限一栏中查看。结果让我有点失望,上面显示都是正常的。如图:

目录权限ok.png

最后面一行清楚的说明了tmp临时目录是可写的。这怎么可能?

3,寻找解决方案


3.1 升级Joomla

使用google搜索,发现遇到这种的问题的人很少,那么基本上可以判断这是一个小众问题,很可能是我犯了一些低级错误,或者这个问题只在某一些固定的区域才会发生。

按照经验,对Joomla核心进行了升级从原先的3.9.3升级到了最新的3.9.8版本。升级之后,清理了缓存,发现问题依然存在

3.2 降低PHP版本

通过后台,可以看到用户使用的PHP版本为7.2.这个版本我用得比较少,可能是版本太高导致的问题。因此,就将服务器的PHP版本切换到7.0,然后重启,发现问题依然存在。

3.3 验证测试环境

这个时候就非常的困惑了,这个问题怎么会发生呢。难道是代码有问题,我将用户的网站备份,放到我的环境中,发现工作完全正常啊。这就坚定了肯定是服务器环境的问题,但问题出在了什么地方呢。

3.4 分析源码

开始分析Joomla的源码,在libraires/src/filesystem/file.php这个文件中找到了源码,发现代码逻辑上并没有错误,当文件无删除权限的时候抛出异常。那么最终的可能就是tmp下的文件真的可写吗?

带着这个疑问,在ftp目录下找到了tmp目录,在这个目录下,发现了问题,文件居然不可写。如图:

不能删除文件.png

上图中的权限一栏 是rw-r--r-- 。joomla对这个文件没有写权限,这怎么可能?首先我已经设置了tmp目录为777,其次,这个文件明显是一个临时文件为joomla创建,为什么会没有写权限呢?这也太奇怪了。我马上联想到虚拟空间的管理后台,在调整权限的地方感觉和以往的程序不太一样,感觉挺别扭的。截图如下:

虚拟空间设置权限.png

这个权限设置的界面,看似很高级,但对真正的程序员来说,这个设置界面有些让人疑惑的地方,还不如直接让我写777更直接。

上面虽然我已经成功了将tmp目录设置为可读可写,但是tmp目录下新的文件的权限还是不可写(Joomla每一次执行都会产生一些临时文件,虽然你可以通过ftp对不能删除的文件修改权限,但新产生的文件依然没有删除权限,所以即使你删除了上面提示的文件,这个错误也不会消息的)

joomla程序写权限.png

问题分析到这了,基本上就清楚了,客户的虚拟主机有一套自己的权限控制机制,而这套控制机制是有bug。客户无法通过ftp客户端或者管理后台来对其进行调整。只能提交工单。  

3,总结


如何解决这个问题呢?

请联系你的空间提供商,让他们将tmp目录设置为程序可读可写。最主要的一点就是要让程序产生的临时文件可读可写。

4,感谢


在看到这篇文章后,有网友留言评论告诉我最终的解决方案

1
你好!正确解决办法,进入阿里云虚拟空间管理。。。找到php.ini设置。 找 ( PHP函数chmod设置:启用 禁用)。。请启用,就能解决问题

 

Joomla为高级用户提供的5个技巧

Joomla是一个很棒的CMS,它有很多特性,即使是普通用户也可能无法理解所有可用选项

我将分享Joomla高级用户喜欢利用的5个技巧:

  • 全局签入
  • 在页面标题中显示站点名称
  • 在所有页面中启用HTTPS
  • 复制一个模块
  • 预览模块位置

技巧1:全局签入

为了解锁所有文章、类别、插件和模块的编辑,您可以进行全局签入

下图显示锁定内容出现:

Joomla为高级用户提供的5个技巧

下一张图片展示了如何检入站点上的所有项

  • 转到系统>全局签入
  • 选择“数据库表”行中的所有项
  • 点击“Check-in”按钮

Joomla为高级用户提供的5个技巧

技巧2:在浏览器栏中显示站点名称

您可以在浏览器中显示站点名称和主页标题。具体做法如下:

  • 转到系统>全局配置
  • 在“SEO设置”部分,找到“网页标题中的网站名称”
  • 选择标题前或标题后,这取决于您是否希望站点名称显示在文章名称的前面或后面
  • 点击“保存并关闭”

Joomla为高级用户提供的5个技巧

现在转到站点的前台,你的网站名称会显示在网页标题旁边:

Joomla为高级用户提供的5个技巧

技巧3:为您的整个站点启用HTTPS

为了在您的站点上启用https,您需要安装一个有效的SSL证书。一旦您与您的托管公司讨论了启用SSL证书的问题,接下来要做的是:

  • 转到系统>全局配置
  • 在“服务器设置”一节中,查找“强制HTTPS”。选择“整个网站”
  • 点击“保存并关闭”

Joomla为高级用户提供的5个技巧

技巧4:复制一个模块

您可以复制一个模块,当我们想为不同的模块位置使用相同的模块设置时,这非常有用

  • 转到扩展>模块
  • 检查要复制的模块
  • 点击“复制”按钮

Joomla为高级用户提供的5个技巧

现在编辑新模块。进行必要的调整,例如修改设置并分配到所需的页面。

技巧5:预览模块位置

您可以实时预览模块位置,以便查看哪些位置可用以及模板布局中的确切位置。要预览模块位置,您需要做两件事:

  • 转到扩展>模板
  • 点击屏幕右上角的“选项”按钮
  • 将“预览模块位置”设置为“是”
  • 点击“保存并关闭”

Joomla为高级用户提供的5个技巧

现在,转到前端,在URL的末尾添加?tp=1 这里有一个你可以使用的例子:www.yoursite.any/some-page/?tp=1

您现在将看到可用的模块位置:

Joomla为高级用户提供的5个技巧

 

 

web权限管理

什么是权限管理:对用户访问系统进行控制,按照安全规则、安全策略控制用户只能访问被授权的资源,一般包含认证授权两部分。

权限管理基本流程图


用户认证:验证用户身份的合法性,即用户登录,常用的身份认证方法:1.帐号密码 2.指纹 3.证书

用户认证的相关概念

subject:主体,可以是用户,也可以是程序来访问我们的系统资源
principal:身份信息(帐号),通常是唯一的,一个主体可以拥有多个身份信息,比如邮箱帐号,手机帐号,QQ帐号等,但只有一个主身份信息(primary principal)
credential:凭证,可以是密码、证书、指纹

用户授权:简单理解为访问控制,具有某种资源对应的权限才可以访问该资源

用户授权的相关概念

资源:resource,资源分为类资源(比如用户信息类、商品类)和实例资源(具体的id为01的用户)

资源分为3个控制级别
1.匿名资源:不用登录就可以访问的资源,比如首页,登录页,注册页等
2.公共资源:登录(身份认证)后可以访问的资源,不用权限,比如用户个人中心
3.权限资源:身份认证后还需要有相应的权限,比如vip才可以访问的资源

权限:permission,对资源进行的操作,比如增删改查

权限模型
主体(账号、密码)
资源(资源名称、访问地址url)
权限(权限名称、针对的资源id)
角色(角色名称,比如管理员,普通用户,VIP用户)
角色和权限关系(角色id、权限id)
主体和角色关系(主体id、角色id)

上图常被称为权限管理的通用模型,不过企业在开发中根据系统自身的特点还会对上图进行修改。
因为权限模型与资源模型是一对一的关系,所以一般把它们合成一张表,即权限(权限名称、资源名称、资源访问地址)

权限控制两种方式
1.基于角色的访问控制(RBAC role  based  access  control)
系统代码中实现:
//如果该user是部门经理则可以访问if中的代码
if(user.hasRole('部门经理')){
//系统资源内容
//用户报表查看
}
问题:
角色针对人划分的,人作为用户在系统中属于活动内容,如果该 角色可以访问的资源出现变更,需要修改你的代码了,比如:需要变更为部门经理和总经理都可以进行用户报表查看,代码改为:

if(user.hasRole('部门经理') || user.hasRole('总经理')  ){
//系统资源内容
//用户报表查看
}
不易扩展维护,角色的权限一变动就得修改代码

2.基于资源的访问控制(RBAC resource  based  access  control)
对于资源增减和角色权限变更我们只需要通过后台管理平台增删对应的数据库表数据即可,不用修改代码
对资源的访问需要具有permission权限,代码可以写为:
if(user.hasPermission ('用户报表查看(权限标识符)')){
//系统资源内容
//用户报表查看
}
上边的方法就可以解决用户角色变更不用修改上边权限控制的代码。

粗粒度权限管理,对资源类型的权限管理。资源类型比如:菜单、url连接、用户添加页面、用户信息、类方法、页面中按钮,本质都是基于url
粗粒度权限管理比如:超级管理员可以访问户添加页面、用户信息等全部页面。
部门管理员可以访问用户信息页面包括 页面中所有按钮。

细粒度权限管理,对资源实例的权限管理。资源实例就资源类型的具体化,比如:用户id为001的修改连接,1110班的用户信息、行政部的员工。
细粒度权限管理就是数据级别的权限管理,基于数据行
细粒度权限管理比如:部门经理只可以访问本部门的员工信息,用户只可以看到自己的菜单,大区经理只能查看本辖区的销售订单。

About Us

Since 1996, our company has been focusing on domain name registration, web hosting, server hosting, website construction, e-commerce and other Internet services, and constantly practicing the concept of "providing enterprise-level solutions and providing personalized service support". As a Dell Authorized Solution Provider, we also provide hardware product solutions associated with the company's services.
 

Contact Us

Address: No. 2, Jingwu Road, Zhengzhou City, Henan Province

Phone: 0086-371-63520088 

QQ:76257322

Website: 800188.com

E-mail: This email address is being protected from spambots. You need JavaScript enabled to view it.