海洋CMS(seacms)是一款影视CMS程序,各方面功能都还不错,简单易用!但是个人对其演员名称的伪静态设置不满意,因为默认是动态URL:
原URL格式:
/search.php?searchword=汤唯
修改后的URL格式:
/tags/汤唯
演员名称伪静态的好处:
1、URL更简洁,利于搜索引擎抓取;
2、自动为每个演员生成一个电影合集的页面,自动布局大量演员相关长尾词,效果比一个个演员添加专题来得实在;
3、增加此伪静态,也相当于为页面新增了一个页面类型,自然也增加了页面的内容维度。
其实原理很简单,就是在搜索的功能基础上修改,然后进行URL重写,就大工告成了!
演员名称伪静态修改步骤:
1、复制根目录的search.php,并重命名为tags.php,然后修改此文件的内容:
$searchTemplatePath = "/templets/".$GLOBALS['cfg_df_style']."/".$GLOBALS['cfg_df_html']."/search.html";
修改为:
$searchTemplatePath = "/templets/".$GLOBALS['cfg_df_style']."/".$GLOBALS['cfg_df_html']."/tags.html";
2、为主演电影合集页面制作一个单独的模板,并命名为:tags.html,或者直接复站内模板search.html,然后修改成tags.html;
3、修改程序:/include/common.func.php,找到代码
function getKeywordsList($key,$span){
if($key=='')return $key;
$keyWordsStr="";
$keystr=str_replace(",",",",$key);
if (strpos($keystr,",")>0){$keyWordsArray=explode(",",$keystr);}else{$keyWordsArray=explode(" ",$keystr);}
for($kli=0;$kli<count($keyWordsArray);$kli++){
$keyWordsStr.="<a href='/".$GLOBALS['cfg_cmspath']."search.php?searchword=".urlencode($keyWordsArray[$kli])."'>".$keyWordsArray[$kli]."</a>".$span;
}
return $keyWordsStr;
}
修改为:
function getKeywordsList($key,$span){
if($key=='')return $key;
$keyWordsStr="";
$keystr=str_replace(",",",",$key);
if (strpos($keystr,",")>0){$keyWordsArray=explode(",",$keystr);}else{$keyWordsArray=explode(" ",$keystr);}
for($kli=0;$kli<count($keyWordsArray);$kli++){
$keyWordsStr.="<a href='/".$GLOBALS['cfg_cmspath']."tags/".urlencode($keyWordsArray[$kli])."'>".$keyWordsArray[$kli]."</a>".$span;
}
return $keyWordsStr;
}
4、编写伪静态规则:
Windows服务器IIS环境:
在web.config文件添加规则:
<rule name="已导入的规则 1-1">
<match url="tags/(.+?)$" ignoreCase="false" />
<action type="Rewrite" url="tags.php?searchword={R:1}" appendQueryString="false" />
</rule>
或者在http.ini添加规则:
#tags
RewriteRule ^(.*)/tags/(.+?)\$ $1/search\.php\?searchword=$2\ [I]
Linux服务器Apache环境:
在.htaccess中添加规则:
#tags
RewriteRule tags/(.+?)$ tags.php?searchword=$1
修改完成后,在内容页中查看演员的URL地址就会变成伪静态的格式,而不是之前的动态搜索的格式!
如何开启 Redis 缓存标签会失效,需要修改 common.redis.func.php
搜索
1380行 function getKeywordsList($key,$span){
把
search.php?searchtype=
改为
tags/
注意:tags目录可以自由修改为任意名称。各位网友如有更好的解决方法,欢迎交流!
为您推荐
LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.文档地址:https://liningit.github.io/LnskyDB/开源地址:https://github.com/liningit/Ln..
CSS砌体布局(Masonry Layout)CSS砌体布局是一种网页布局技术,它的灵感来源于砖石墙的排列方式,类似于“拼图”或“拼砖”的效果。在砌体布局中,元素的排列并不完全遵循传统的网格布局规则,..
CSS的 columns 属性(如 columns、column-count 和 column-width)通常用于多列文本布局,而不是直接用于砌体布局。然而,结合 columns 和 visibility 属性,可以在某些情况下实现类似砌体布局的效果,虽然它并不完..
TinyMCE是一款流行的开源富文本编辑器,广泛应用于网页内容管理系统(CMS)和各种Web应用程序中。它提供了丰富的功能和高度可定制性。下面将介绍一些常用的菜单设置:工具栏:显示或隐藏工具栏。可以通过配置文件中..
在使用 Entity Framework Core 和 SQLite 时,可以通过以下步骤为时间字段设置默认值为当前时间:方法一:在模型配置中设置默认值你可以在 DbContext 的 OnModelCreating 方法中,通过 Fluent API 配置默认值:prote..
理解 Angular Mock 和 静态方法在 Angular 单元测试中,Angular Mock 是一个强大的工具,它允许我们模拟和替换 Angular 的服务、组件和其他依赖项。而静态方法 是属于类本身,而不是类的实例的方法。它们可以直接通..
什么是 Docsify?Docsify 可以即时生成你的文档网站。与 GitBook 不同,它不会生成静态 html 文件。相反,它会智能地加载和解析你的 Markdown 文件并将其显示为网站。要开始使用它,你需要做的就是创建一个 index.ht..
mysql突然停止的原因有多种,这里不列举,可以排查具体原因。如果停止后,还可以手工正常启用mysql,那可以考虑把shell脚本添加到宝塔的计划任务里,定时每隔几分钟检测一次,让mysql自动检测停止后立马启用。ps=`ps..
我的是宝塔面板直接上代码nginx_procnum=`ps -ef|grep "nginx"|grep -v grep|wc -l`if [ $nginx_procnum -eq 0 ]then echo "start nginx..." /etc/init.d/nginx startelse echo "no cmd" fi然后添加定时任务;每分钟..
redis突然停止的原因有多种:1、内存不足,如果Redis使用的内存超过了服务器可用内存,操作系统会自动杀死Redis进程。2、服务器的资源限制(ulimit)比较低,Redis可能会因为无法打开足够的文件描述符而停止。3、其..
之前写过一篇文章《使用htmlagilitypack+xpath抓取网页内容示例》,提到使用htmlagilitypack抓取网页信息。想做一个网络爬虫,但是想把网页上的图片也下载到本地,于是写了下载图片的功能。但是第三方网站上的图片大..
在 .NET 6 中,跨域设置相对于以前版本有了一些改变,主要是为了提供更好的安全性和灵活性。跨域资源共享(CORS)是一种安全机制,允许Web应用程序从不同域(即不同的网站)访问其资源。以下是在 .NET 6 中进行跨域..
在 ASP.NET 中,你可以通过修改 web.config 文件中的maxRequestLength 配置来设置允许上传文件的大小限制。这可以帮助你控制用户上传的文件大小,以防止不必要的服务器资源消耗和安全风险。以下是设置上传文件大小限..
在 .NET Core 中,你可以通过配置应用程序的 Startup.cs 文件来设置允许上传文件的大小限制。以下是设置上传文件大小限制的步骤:打开你的 ASP.NET Core 项目的 Startup.cs 文件。在 ConfigureServices 方法中,添加..
最近在玩谷歌广告Google Adsense,看到谷歌有个AMP自动广告,查看了他的介绍觉得很有意思。谷歌广告联盟的官方介绍是这样的:AMP 自动广告会自动将 AdSense 自动广告放置在您的 AMP 网页上。在添加 AMP 自动脚本和广..
以下是10个常见的 C# 基础面试题及其答案:C# 中的值类型和引用类型有什么区别?答案:值类型直接存储数据的值,而引用类型存储对数据的引用。值类型在栈上分配内存,而引用类型在堆上分配内存。什么是命名空间(Nam..
.NET Core 允许开发人员在 Web API 中设置跨域资源共享 (CORS)。CORS 是一种标准,允许浏览器从不同的域访问资源。在 .NET Core 中设置 CORS 有两种方法:使用 CorsPolicy 类使用 Cors 属性使用 CorsPolicy 类CorsPo..
LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.文档地址:https://liningit.github.io/LnskyDB/开源地址:https://github.com/liningit/Ln..
最近在做一个需求,需要对网页生成预览图。但是网页千千万,总不能一个个打开,截图吧?于是想着能不能使用代码来实现网页的截图。其实要实现这个功能,无非就是要么实现一个仿真浏览器,要么调用系统浏览器,再进行..
笔者在使用某个免费空间的时候遇到一个问题,无法加载字体文件,该免费空间无法设置MIME类型,所以肯定字体文件就无法访问了。于是曲线救国,把样式放到另外一台IIS服务器上,引用另外一个域名下的样式文件,但是出..