我有以下PHP代码,这是一个文件名,我用它作为我的页面的标题,我提供给观众的每个下载。我希望能够有seo友好的标题和url。
<?php echo $file_info[21]; ?>
每个页面的url看起来像这样:
http://site.com/directory/download_interim_finder.php?it=ZWtkaW1rcmInbn1ma3h9aXFLcHN6fWVzeDgnISJoO3tran0reW97cSd1YHR5YHZIbWBmfzxwY3tiOnxycnA8Y25zfWpna3Y+YXtlZnl7dnJLf3J8cWd2fT4kJCIramFbcm1tbWRqdHJmJnR2ZGhKd3JpdShQdGV+bX09fWh0b2JnfXx9anV2J3F7YHh4d3Z2S3Jyf3ZmdX8pNyg1anZ/bnhpdGJwVnx5cXF5Zn5bYW14cHp2bTQiKXFsYw==
我想把这个长URL转换成一些对seo更友好的东西,这将包含我上面指定的php代码,比如"filename.php",而不是你在这里看到的长URL。
我希望使用。htaccess,但我读到你不能通过那里做到这一点。我花了几个小时寻找解决这个问题的方法,但没有找到解决方案。如有任何帮助,不胜感激。
谢谢!
关于使用PHP和。htaccess mod重定向创建SEO友好的动态内容URL的一步一步指导。友好的url可以提高网站在搜索引擎中的排名。在尝试之前,您必须启用mod_rewrite。httpd.conf中的模块。只需几行PHP代码即可将标题数据转换为干净的URL格式。
示例数据库博客表列id,标题,正文和url。
CREATE TABLE `blog`
(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`title` TEXT UNIQUE,
`body` TEXT,
`url` TEXT UNIQUE,
);
Publish.php
包含PHP代码。将标题文本转换为友好的url格式并存储到博客表中。
<?php
include('db.php');
function string_limit_words($string, $word_limit)
{
$words = explode(' ', $string);
return implode(' ', array_slice($words, 0, $word_limit));
}
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$title = mysql_real_escape_string($_POST['title']);
$body = mysql_real_escape_string($_POST['body']);
$title = htmlentities($title);
$body = htmlentities($body);
$date = date("Y/m/d");
//Title to friendly URL conversion
$newtitle = string_limit_words($title, 6); // First 6 words
$urltitle = preg_replace('/[^a-z0-9]/i', ' ', $newtitle);
$newurltitle = str_replace(" ", "-", $newtitle);
$url = $date . '/' . $newurltitle . '.html'; // Final URL
//Inserting values into my_blog table
mysql_query("insert into blog(title,body,url) values('$title','$body','$url')");
}
?>
<!--HTML Part-->
<form method="post" action="">
Title:
<input type="text" name="title"/>
Body:
<textarea name="body"></textarea>
<input type="submit" value=" Publish "/>
</form>
Article.php
包含HTML和PHP代码。显示博客表中的内容。
<?php
include('db.php');
if($_GET['url'])
{
$url =mysql_real_escape_string($_GET['url']);
$url = $url . '.html'; //Friendly URL
$sql = mysql_query("select title,body from blog where url='$url'");
$count = mysql_num_rows($sql);
$row = mysql_fetch_array($sql);
$title = $row['title'];
$body = $row['body'];
}
else
{
echo '404 Page.';
}
?>
<!-- HTML Part -->
<body>
<?php
if($count)
{
echo "<h1>$title</h1><div class='body'>$body</div>";
}
else
{
echo "<h1>404 Page.</h1>";
}
?>
</body>
. htaccess
URL重写文件。将原始URL 9lessons.info/article.php?url=test.html重定向到9lessons.info/test.html
RewriteEngine On
RewriteRule ^([a-zA-Z0-9-/]+).html$ article.php?url=$1
RewriteRule ^([a-zA-Z0-9-/]+).html/$ article.php?url=$1
当我看到你发布的URL示例时,我看到了两件事:
- 指向一个PHP脚本:/目录/download_interim_finder.php
- 它有一个(看起来像一个)Base64编码的参数,显然没有人可以读取
我猜你的下载脚本的输入是编码在它的参数字符串,你需要把它放在URL,否则你不能确定你想下载哪个文件。因为你想要你的URL是语义的,你必须添加你的语义信息到URL。
例如,你可以设置如下url:
/download/documentation/productX/[[Base64encodedinputstring]]
在你的。htaccess中,你需要这样的规则:
RewriteEngine On
RewriteRule /download/.*/([^'/]+) /directory/download_interim_finder.php?it=$2
如果你的主机不允许你使用。htaccess,那么你就不能轻易地使用语义url。