1

重複の可能性:
正規表現サニタイズ(PHP)

リンクをSEOにしたい。始める前のリンクは次のようになりました。

http://www.domain.tld/index.php?page=blog

私の目標はそれを次のように変更することでした:http://www.domain.tld/blog。それは今うまくいきます。

私はhtaccessをこれに変更しました:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^\w+$ index.php?page=$0 [L]
RewriteCond %{THE_REQUEST} index\.php
RewriteCond %{QUERY_STRING} ^page=(\w+)$
RewriteRule ^index\.php$ /%1? [R=301,L]
RewriteRule ^blog/(\d+)-([\w-]+)$ index.php?page=single_news&id=$1&headline=$2

次に、ブログエントリのヘッドラインのURIを変更したいと思います。彼らはこのように見えました:http://www.domain.tld/index.php?page=single_news&id=2&headline=This%20Is%20A%20Headline

私はそれらを次のように見せたいと思います:http://www.domain.tld/blog/2-this-is-a-headline 私はdiv-class "news_headline"で私の見出しリンクを生成しています(以下を参照)。

<div id="main">
<?php
$query = "SELECT `id`, `headline`, `writer`, `content`, DATE_FORMAT(date,\"%d. %M %Y\") AS `date` FROM `blog` ORDER BY `id` DESC";
$news_resource = mysql_query($query) or die(mysql_error());
?>

<?php
$all_news = array();
$five_news = array();
for($i = 0; $news = mysql_fetch_object($news_resource); $i++){
if($i < 5){
  $five_news[] = $news;
}
$all_news[] = $news;
}
?>

<?php foreach($five_news as $news)
{ ?>

<div class="news_bg">
<div class="news_headline"><a href="blog/<?php echo $news->id; ?>-<?php echo $news->headline; ?>"><?php echo $news->headline; ?></a></div>
<div class="news_infoline_top"><?php echo $news->date; ?> &middot; <?php echo $news->writer; ?></div>
<div class="news_text"><?php echo $news->content; ?></div>
</div>
<?php } ?>
</div>

私のhtaccess(上記を参照)では、リンクは次のようになります。

http://www.domain.tld/blog/2-This Is A Headline

私はすでにこれについて助けを持っていて、良い人が私にこのコードスニペットを与えて、リンクを私が望むように見せましたが、それらの使用方法がわかりません:

$urititle = strtolower(preg_replace('/[^\w-]+/','-', $title));

$_GET['headline'] != $urititle

迷っています。

4

1 に答える 1

1

あなたはすでにかなり近づいています:

  • インターセクションの先頭に ID を入れます。これにより、一意で高速な ID でデータベースにクエリを実行できます。
  • 見出しのテキストをスラッグバリアントに変換する必要があることは理解しており、これが文字列処理であることは既にわかっています。

これを完了するには、いくつかの手順が残っています。いくつかのメモ:

  • 文字列変換を行う関数を自分で作成します。ここで重要な部分は、簡単に呼び出すことができるということです。
  • 記事へのリクエストが届いたら、文字列から取得した ID 値に基づいて記事をフェッチします。$assigned = sscanf($slug, '%d-', $id);
  • SEOについては、リンク作成時と同様に行います。次に、現在のリンクがまだ正しいかどうかを比較します (見出しが変更されている可能性があります)。そうでない場合は、正しいリンクに恒久的にリダイレクトします。

以上です!

于 2012-10-26T12:31:26.553 に答える