ねこまぐろBlog

ネットなどの備忘録なブログ。たまに創作ネタメモとか?

rel=canonical 用のPHPに手を入れる

Google Search Console からの通知見てたんですけど、送信したサイトマップのURLが登録されなかった、という事で詳細を見ていたら、以下のような感じになってた。

スラッシュの重複『//』、index.htmlの省略派でリダイレクト飛ばしてたのに効いてなかった『index.html』と?hogehogeってついちゃってる『.html?hogehoge』の3パターンでした。

<?php
$canonical = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
?>
<link rel="canonical" href="https://<?php print"$canonical"?>">

こんな感じでアクセスしたURLでやってて、シンプルに対応してたのが裏目に出てしまったので以下のように修正。

<?php
$canonical = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
$canonical = preg_replace("{//}","/",$canonical);
$canonical = preg_replace("{.html?(.*)}",".html",$canonical);
$canonical = preg_replace("{index.html}","",$canonical);
?>
<link rel="canonical" href="https://<?php print"$canonical"?>">

上手く動いて成功 ヾ(・ω・)ノ って今見ると1つ目と3つ目は $str_replace でもいいのか。あと「"{.html?(.*)}i"」の方が安心かねぇ。そしてGoogleの対応を待つ。

手打ち個人サイト増えるといいなぁ、という記事を増やしていきたいような。phpのおかげで楽してます。

ちなみにgoogleサイトマップは以下のサイトのを使ってます。移転されたのだろうか。

Posted at 2018-01-29 23:42 in tips » php

pixivの外部リンク用グリモンを修正してみた

GreaseMonkeyのpixiv で外部サイトへのリンクを直接開けるようにする(direct link to the site on pixiv)を利用しているのだけど、 https://www.pixiv.net/http://example.com/ になって使えなくおかしいなー、と思ったら http%3A//example.com%2F とURL扱いになってませんでした。

どおりで。

と言う訳で、 direct_link_to_the_site_on_pixiv_1.0.user.js の末尾「})();」の後ろに追記しました。

document.body.innerHTML = document.body.innerHTML.replace(/\%2F/g, '\/')
document.body.innerHTML = document.body.innerHTML.replace(/\%3A/g, ':')
document.body.innerHTML = document.body.innerHTML.replace(/\%3D/g, '=')
document.body.innerHTML = document.body.innerHTML.replace(/\%3F/g, '?')
document.body.innerHTML = document.body.innerHTML.replace(/\%23/g, '#')

正しいかはさておき、動いたからまあいいか! 支障が出ても知ーらなーい。

それに加えて、URLを開く時は No-Refererのアドオンでリファラーをカットして開いてます。やったね!

参考:地下生活者の手遊び から「にゃ」ほかを除去するGreasemonkey

追記1 2012/04/21:「=」を置換に追加。
追記2 2012/05/03:「?」を置換に追加。
追記3 2012/07/22:「#」を置換に追加。

Posted at 2012-04-17 12:52 in tips » greasemonkey

PHPで指定日まで表示・非表示する

しょっぱい記述ですが、適当にサーバへ保存してて、いつも探してどうしようもないからブログにメモっておきます。

タグが使いやすいように、echoはシングルクオート('')で囲ってます。

<?php
$nenga2008 = date("Ym"); // Yが年mが月

if($nenga2008 == 200812){
echo''; // 2008年12月だと非表示
}
else{
echo'
それ以外だと表示
';
}
?>

年賀用が上記の記述。たぶん表示されるはず……。12月中は非表示で放置。

<?php
$nenga2008 = date("Ymd"); // がY年m月d日=2008年12月29日とか

if($nenga2008 == 20081229){ // ==の後に日付
echo'2008年12月29日だと表示'; //一日限定とかに出来ますよね。
}
else{
echo''; // それ以外だと非表示
}
?>

一日限定……エイプリルフールとかw

<?php
$nenga2008 = date("Ymd");

if($nenga2008 == 20081229){
echo'2008年12月29日だと表示';
}
elseif($nenga2008 == 20081230){
echo'2008年12月30日だと表示'; //elseifで増やせる。
}
else{
echo''; //それ以外だと非表示
}
?>

表示非表示は適当に。

スマートかはさておき動けばいいや ヽ(ゝω・)ノ

Posted at 2008-12-29 23:48 in tips » php

Categories
Archives
Tagging

Page 1 of 1: 1

スポンサーリンク

2006年12月から計測のページビューカウンター。