2010-01-24 93 views
1

我用最近购买的php脚本构建了一个客户端网站,对脚本的支持是可悲的,我希望脚本的固定链接对搜索引擎友好,但它们不是。它们之间有空格,这些空格之间并没有被搜索引擎索引。PHP固定链接..怎么改?

那么,我该如何更改固定链接呢?谢谢大家..

+0

您购买的剧本是否有名字?如果某些开发人员可以查看它,我们可以更好地告诉您在源代码中进行更改的位置。 – MidnightLightning 2010-01-24 22:06:45

回答

0

urlencode函数将负责URL中的空格。

例如:

<?php 
$base_url = 'http://example.com'; 
$category = urlencode('some thing'); 
$item  = urlencode('Name of an item'); 

echo "<a href=\"{$base_url}/{$category}/{$item}/>{$item}</a>"; 
?> 

这将使链接http://example.com/some+thing/Name+of+an+item/其搜索引擎应该是罚款。

而且,假设您正在使用URL重写(如mod_rewrite),则这些值应该到达您的PHP脚本,就像它们在urlencode函数之前一样。如果不是,您可以使用urldecode恢复它们。

+0

嗨Atli, 非常感谢您的帮助。我非常感激。 我进入文件,并在我的PHP脚本中搜索'urlencode',发现其中的一些。你想让我用上面的代码替换那个代码吗? 我想主持人不允许公开链接。 === //将匹配的php代码转换成函数 $ _include_compiled =“<?php/* Smarty version”。$ smarty - > _ version。“,创建于”.strftime(“%Y-%m - %d%H:%M:%S“)。”\ n“; $ _include_compiled。=“编译自”。 strtr(urlencode($ params ['resource_name']),数组('%2F'=>'/','%3A'=>':'))。 “*/\ n \ n”; – regguy 2010-01-24 19:56:59

+0

你发布的那一小段代码似乎并不是您正在寻找的'urlencode'的正确实例(尽管它似乎是Smarty模板引擎的独特解释)。任何其他事件? – MidnightLightning 2010-01-24 22:17:27

+0

我检查了脚本的客户区并收到了我的新版本。新版本中有一个读取文件,它有指示更新sql并替换一些代码。 现在永久链接结构是这样的。 http://Domainname.com/Arts-Humanities/how-are-you-doing?-|4 我不确定在问题结尾附加的“ - | 4”是否可靠和友好搜索引擎。对此有何想法? 再次感谢您。 – regguy 2010-01-25 04:21:14

1

如果你有50个PHP文件和一个带有这个“脚本”的.htaccess文件,你可能首先必须找到流过它们的编程路径。如果您查看.htaccess文件,您应该看到一些ModRewrite行,它们应该以PHP文件名结尾。这是接收(和解码)永久链接的脚本。该文件将是一个开始寻找重写永久链接结构的钩子的好地方。如果您可以发布该源代码(或将其放置在pastebin之类的地方并发布该链接),我很乐意看一看。

从您的其他评论之一,它听起来像至少部分脚本是使用Smarty PHP模板引擎。如果是这样,如果您可以找到包含“缓存”,“模板”和“templates_c”文件夹(或类似文件夹)的文件夹,则也可以将该文件夹排除在外;这将是用于显示页面的模板,而不是任何解码/编码脚本。

编辑:看你的.htaccess文件,29行看起来是在一个与文章的永久链接交易,它指向view.php,并转换什么是永久链接到idtitle GET变量。如果可以,发布view.php的来源,我们将从那里开始。

编辑2好的,看着view.php获得了更多的见解。主要是没有解码功能; Answerscript引擎会立即丢弃永久链接的“标题”部分,并仅通过其ID(管道在URL查询中的编号;通过将URL的标题部分更改为任何内容否则,它仍然会获取正确的页面)。所以,好消息是当你改变编码功能时,没有需要更新的解码功能。不幸的是,这并没有告诉我们编码函数在脚本中的位置。

唯一的线索是,view.php文件包括一个名为include/functions/import.php文件,我假定有does_post_exist($PID)update_last_viewed($PID)update_your_viewed($USERID),并且update_viewcount_question($PID)函数定义。我们来看看该文件的来源,看看是否有任何其他功能用于导入。另外,include/functions/文件夹中有多少个文件?如果只有少数,发布所有来源;那里可能会定义编码函数。如果有一堆,该文件夹中是否有一个export.php文件(即view.php使用的import.php的对面)?发布该文件的源代码,因为它可能具有编码功能。

编辑3在那里,他们分别是:在main.php文件有功能的三重奏:seo_clean_titlesinsert_seo_clean_titlesseo_clean_titles2insert_seo_clean_titles是从一个Smarty的模板中调用的函数(搜索有一个.tpl扩展{insert name="seo_clean_titles"上看到多数民众赞成使用的所有文件),并seo_clean_titlesseo_clean_titles2之间的区别在于,第一echo ES出来的结果,而第二return s it。但是,所有三个都有行$title = str_replace(" ", "-", $title);,这应该将标题中的所有空格都转为连字符。如果你没有看到结果,那么代码可能不会在正确的地方调用这些函数。您可以搜索所有.php文件,并查看是否有其他地方有seo_clean_titlesseo_clean_titles2的调用,并确保结果实际上被用作最终的URL。

编辑4要名“.html”添加到所有网址的结尾:这是在模板文件链接到问题页行:

<a href="{$baseurl}/{$ques[i].seo}/{$title}|{$ques[i].PID}">{$ques[i].title|stripslashes}</a> 

修改成:

<a href="{$baseurl}/{$ques[i].seo}/{$title}|{$ques[i].PID}.html">{$ques[i].title|stripslashes}</a> 

和链接将有“.html”结尾。然后,您需要修改view.php解析出的ID号时,剥离名“.html”再次关:$pid = intval($ph);前右,插入以下内容:

if (strtolower(substr($pid, -5)) == ".html") $pid = substr($pid,0,-5); // Remove ".html" if it exists 

应该这样做!

+0

Hi ML, 非常感谢您的简单解释。我有preg_replace(在19个文件(我做了全局搜索)并上传了htaccess文件http://php.pastebin。com/m4dcdf8e4请看看。 脚本是'answerscript'这是一个问题答案php脚本,但他们的演示现在更新与工作永久链接。该脚本在购买时没有为我工作的固定链接结构。就像我说的,支持不关心更新。 而且,它确实有smarty文件夹(我认为是一个引擎)与库文件,如Smarty_Compiler.class,Smarty.class ... 谢谢! – regguy 2010-01-25 04:00:53

+0

难道这是“答案”:http://www.answerscript.com/?是的,它听起来像是在Answerscript引擎中包含一个完整的Smarty引擎;您可能会在尝试修复永久链接结构时忽略整个“smarty”文件夹,因为它只会处理页面的最终显示。查看我上面的编辑,了解更多关于我从'.htaccess'文件收集到的信息。 – MidnightLightning 2010-01-25 13:11:43

+0

@ MidnightLightning - 非常感谢!说真的,你很棒。 我发现view.php内容文件,并已粘贴在这里http://pastebin.com/m6dc7b983 我想追加没有。在网址的最后是自动/明显的?有可能使http://www.sawaal.ibibo.com/这种类型的永久链接在最后加上.html标签。该网站在搜索中的排名非常好。 我很抱歉问这么多的东西,我不知道你的支持,并帮助我帮助我修复永久链接。欣赏很多.. !! – regguy 2010-01-25 16:37:34