Как мне создать SEO-дружественный URL-адрес для включения переменной PHP / фрагмента кода?

#php #.htaccess #seo #rewrite

#php #.htaccess #seo #переписывание URL

Вопрос:

У меня есть следующий 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, но я читал, что вы не можете сделать это через там. Я потратил часы на поиски способов исправить это и не могу найти решение. Буду признателен за любую помощь.

Спасибо!

Ответ №1:

Пошаговая инструкция по созданию удобного для SEO URL-адреса с динамическим содержимым с использованием PHP и перенаправления .htaccess mod. Удобные URL-адреса повышают рейтинг вашего сайта в поисковых системах. Прежде чем попробовать это, вы должны включить mod_rewrite.so модуль в httpd.conf. Это просто, всего несколько строк PHP-кода преобразуют данные заголовка в чистый формат URL.

База данных

Пример столбца таблицы database blog идентификатор, заголовок, тело и URL.

 CREATE TABLE `blog`
(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`title` TEXT UNIQUE,
`body` TEXT,
`url` TEXT UNIQUE,
);
  

Publish.php

Содержит PHP-код. Преобразование текста заголовка в удобный формат URL-адреса и сохранение в таблице blog.

 <?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-код. Отображение содержимого из таблицы blog.

 <?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
  

Ответ №2:

Когда я смотрю на пример URL, который вы опубликовали, я вижу две вещи:

  • Он указывает на PHP-скрипт: /directory/download_interim_finder.php
  • Он имеет (выглядит как) аргумент в кодировке Base64, который, очевидно, ни один человек не может прочитать

Я предполагаю, что ваш ввод для сценария загрузки закодирован в строке it-argument, вам нужно будет указать это в URL, иначе вы не сможете определить, какой файл вы хотите загрузить. Поскольку вы хотите, чтобы ваши URL-адреса были семантическими, вы должны добавить свою семантическую информацию в URL-адрес.

Вы могли бы, например, создать URL-адреса, подобные:

 /download/documentation/productX/[[Base64encodedinputstring]]
  

Затем в вашем .htaccess вам понадобится правило:

 RewriteEngine On
RewriteRule /download/.*/([^/] ) /directory/download_interim_finder.php?it=$2
  

Если ваш хост не позволяет вам использовать .htaccess, то вы не сможете легко внедрить семантические URL-адреса.