我一直在寻找,阅读和花费过去8天试图将动态链接转换为"漂亮"链接。
我开始使用.htaccess并重写规则。
我的.htaccess文件中有这个基本代码:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^pc-download/([0-9]+)/([^/]*)\.html$ /cgi/pc_read\.pl\?show=$1 [NC]
这将在内部将我的链接重定向到正确的cgi文件并返回该项目。
我遇到的问题是搜索结果中的外部链接。从我所读过的内容和读&看,我应该使用RewriteCond%{THE_REQUEST}然后使用RewriteRule。
由于我已经改变了我的链接结构,我不知道我想要做的事情是否可行。
在内部链接的RewriteRule中,第一部分是"硬编码"即,我使pc下载部分代码。 Next([0-9] +)是项目ID,它是变量?show = $ 1。这是棘手的部分,([^ /] *)是数据库中的资产名称,但不是原始(旧)URL中的资产名称。在内部链接中,我将其编码在页面中,以便自动生成我页面中的任何链接。
所以,这是我希望外部链接的方式:
外部链接:www.xyz.com/cgi/script.pl?show=001 着陆页:www.xyz.com/pc-download/001/name-of-product.html
我查看了可能使用RewriteMap。我使用"创建了一个txt文件。 ID产品名称"在内部,但把它放在我的.htaccess文件中会杀死整个网站,甚至没有激活RewriteRule。
我只是无所事事地转过头,还是我走向了正确的道路?
答案 0 :(得分:0)
无法弄清楚如何让外部链接进入新页面&得到新的链接结构/变量,所以我修改了.htaccess:
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^pc-download/([0-9]+)/([^/]*)\.html$ /cgi/pc_read\.pl\?show=$1&mytemplate=Moved [NC]
使用元刷新更新了旧模板页面:
<META http-equiv="refresh" content="0;URL=http://www.example.com/pc-download/[[gameid]]/[[assetname]].html">
这得到2个变量[[gameid]]&amp; [[assetname]]来自我的数据库,使用运行我网站的cgi脚本并重定向到正确的URL结构。
然后,我创建了一个新页面,显示之前的旧数据库信息,并且所有URL都在浏览器中匹配。
它不是一个理想的解决方案,但似乎有效。我希望元刷新可以让搜索引擎知道这是一个永久性的更改/移动,并且我可以在几个月内删除该步骤/页面。