主に技術的なことを書くブログ

浅めにマークアップ&フロントエンドの技術的なことをメモしていましたが、ざっくばらんに書いています。

Wordpress のパーマリンク設定のカスタム構造の postname を .html から スラッシュ終わりにしたら、スラッグが数字のみのページが 404 になる

Wordpressパーマリンク設定のカスタム構造のパスを、 .html 終わりから f:id:nakagaw:20171026104630p:plain

/ 終わりに変更したら f:id:nakagaw:20171026104500p:plain

スラッグが数字のみのページが 404 になってしまいました。

いろいろ調べたのですが、

パーマリンクの使い方 - WordPress Codex 日本語版

一日に一投稿しか公開しないので %year%%monthnum%%day% というパーマリンクを使用したいと思うかもしれませんが、このリンクはその日の全投稿のアーカイブとして生成されることに注意してください。個別投稿へのリンクは、少なくとも %year%%monthnum%%day%%hour% にする必要があります。

これば別のプラグイン

ローカルタグ URL で 404 エラーが発生する場合は、WordPress の生成する内部書き換え規則がでしゃばり過ぎて UTW の書き換え規則よりも先に呼び出されるからです。この現象は通常、(/%postname%/ のような) カスタムパーマリンク構造を使用している時にのみ起こります。

あたりはものすごく臭うものの、ちょっとずれてて。 こんな誰もがハマりそうなところで全く情報がないのがもやっとしてます。

一番ちかいのが

WordPressのパーマリンク設定で絶対にやってはいけないこと – 数字だけの記事ファイル名

これかなっとおもったけど、4桁とか全く関係なく、数字だと何桁でもアウトな感じで、だいぶはまってたのですが。 この特定のURLを入力すると、どんな Riweire rule がかかってるかを調べるプラグインをおしえてもらって、調査してみると、、

wordpress.org

.html 終わりの場合

Rule:

(.+?)/([^/]+).html(?:/([0-9]+))?/?$

Rewrite 後:

index.php?category_name=$matches[1]&name=$matches[2]&page=$matches[3]

https://example.com/category-hoge/category-fuga/20171026.html
↓ 内部的にはこうなる
https://example.com/index.php?category_name=category-hoge/category-fuga&name=20171026
=> ページあり

/ 終わりの場合

Rule:

(.+?)/([^/]+)(?:/([0-9]+))?/?$

Rewrite 後:

index.php?category_name=$matches[1]&name=$matches[2]&page=$matches[3]

https://example.com/category-hoge/category-fuga/20171026/
↓ 内部的にはこうなる
https://example.com/index.php?category_name=category-hoge&name=category-fuga&page=20171026
=> Not found

アンダースコアひとつでもはいってると
https://example.com/category-hoge/category-fuga/20171026/
↓ 内部的にはこうなる
https://example.com/index.php?category_name=category-hoge/category-fuga&name=20171026

=> ページあり

解決策

?&name= のあとにページスラッグがあれば、そのあいだのカテゴリがどんなものであっても、該当のページに辿りつけるみたいなので、

function.php に以下の add_rewrite_rule を追記

// 数字 + スラッシュ で終わるページの 404 なくす
function custom_rewrite_basic() {
  add_rewrite_rule('category-hoge/([^/]+)(?:/([0-9]+))?/?$', 'index.php?category_name=category-hoge/$matches[1]&name=$matches[2]', 'top');
}
add_action('init', 'custom_rewrite_basic');m_rewrite_basic');

無事ページが表示されました。

これにハマった人でないと何の話やねん、って感じだと思いますが、そうなったときに見ていただければと思います。

参考:

Mac でさくっとローカルサーバーを起動する方法

Mac標準のターミナルからApacheを起動する

MacにはApacheが標準でインストールされているらいいです。

Apacheの起動

sudo apachectl start

ブラウザで http://127.0.0.1/ を確認すると、「It works!」と表示されるかと思います。

これは、/Library/WebServer/Documents/ 以下がドキュメントルートなので、そこを見ている感じです。

ifconfigコマンドで調べた自分のIPアドレス(192.168.x.x)に、同一ネットワークのiPhoneからアクセスできるので実機確認ができます。

Apacheの停止

sudo apachectl stop

起動状況の確認

ps agx | grep httpd

Apacheの再起動

sudo apachectl restart

参考:Mac標準のApacheの起動と停止 | Web制作・Webシステム(東京)の株式会社ワイワイエンジン

Pythonでもできる

MacにはPythonも標準でインストールされているらいいです。

python -m SimpleHTTPServer 8888

http://127.0.0.1:8888/ iPhoneからは http://192.168.x.x:8888/

Ctrl+c で停止。

参考:手っ取り早く Mac でローカルサーバーを立てる方法 - tacamy.blog

今更聞けない IPアドレスについてまとめ

127.0.0.1/(localhost/と同じ)

127.0.0.1というIPアドレスはよく利用されるため、通常は「localhost」という単純なホスト名でアクセスできるようになっている(ドメイン名は付かない。localhostという単一ラベルの名前としてのみ有効)。例えば「http://127.0.0.1/」は「http://localhost/」としてアクセスできるし、ローカル・コンピュータ上のFTPサーバに接続するには、「ftp localhost」とすればよい。  localhostはほとんどの場合127.0.0.1と同義に利用できるが、NetBIOS関連のアプリケーションでは意味が異なることがある。
引用元:"Windows TIPS:ローカル・ループバック・アドレス(127.0.0.1)とは? - @IT

192.168.x.x/

社内ネットワークなどではプライベート・アドレスを使うのが一般的になっている。社内からインターネットへアクセスするときは,インターネットとの境界に置いたゲートウエイ装置でIPアドレスをプライベートからグローバルに付け替えるアドレス変換という技術が使われている。
引用元:"ネットワークHOTTOPICS - なぜ「192.168.x.x」のアドレスを使う?:ITpro

0.0.0.0/

Local Addressの0.0.0.0はマシンが持っているすべてのIPアドレスを表しています。つまりマシンが複数のIPを持っていた場合、マシンの持つすべてのIPアドレスにおいて接続を受け付けているということになります。 それとは違いLocal Addressが指定されている場合は、接続先アドレスがそのアドレスの接続しか受け付けないようになっています。
引用元:"「0.0.0.0」や「127.0.0.1」の意味? - ネットワークセキュリティ - 教えて!goo

参考:Mac OS X LionでApache、PHP、MySQLを動かす | HAPPY*TRAP

2017年の福岡出張

f:id:nakagaw:20170704182617j:plain

今年も会社の行事で福岡に行った。

毎年、その行事が終わったあと、どっか行きたいなぁ、と思うんですが、今年はYCAMというずっと行きたいなぁ、と思っていた山口にあるメディアアートの施設に行こうかなと調べたら、ちょうど何もやってなくて、ほんなら、と思って、詩人のまど・みちおさんの常設展示(絵がめっちゃ良い)がある徳山の周南市美術博物館はどうかなーと思って調べたら、こちらも期間展示の方でそそられるものがなく、その周りになにかあれば行ったんですが、なにもないところなので、福岡でも漫画喫茶行くかーとか思ってたんですが。

KBCシネマ

f:id:nakagaw:20170704182629j:plain

KBCシネマ、というミニシアター系映画館を発見しました。

調べてみると、ちょうど、18時半ぐらいから「怪獣はささやく」という「パンズ・ラビリンス」というダークファンタジ―映画(けっこう好き)のスタッフ(監督は違うのでモヤっとする)で作った映画が面白そうだったので、行ってみたら、なんとその時間は次の日からのスケジュール!でやってなかった(僕の圧倒的勘違い)。

このまま映画見るモードどうしてくれようか、ということで、ちょうどたまたま20時からのレイトショーでやってたマイク・ミルズ監督の「20 センチュリー・ウーマン」を見ることにした。

漫画喫茶 ポパイ

それまで時間があったので、漫画喫茶に社会見学に行くことにした。今回はポパイという全国チェーン店だ。入ってみると、これが、漫画喫茶、かという感じだった。こないだ東京で行ったのはあれはやはり、ネットカフェだ。

漫画がいっぱいあって、明るい個室と暗い個室があった。暗い方は仮眠用で、次回、宿泊で使うことを想定して暗い方にしてみたが、薄暗い中でデスクライトしかなくて、漫画読むのが辛かった。明るい方の個室は、仕切りの高さも少し低いので、僕ぐらいの身長だと見ようとおもったら見れそうなので、寝るのには微妙そうだった。漫画読むときは明るい方で読みたい。けど、寝るときは暗い方がいい。むずかしい。

この店舗では完全に自由な席というのがないみたいで、個室を選んでもそちらは自由に使える、とかであればよかったように思う。むしろ、そういう店舗のほうが多いように思うが。。

漫画も多すぎると何を読むべきか悩んで30分ほどロスして、「ハンター✕ハンター」を読みはじめたものの、過去の記憶を取り戻すのに15巻ほど遡って、4冊目いくかどうかぐらいで2時間ほど経ったので、漫画喫茶は6時間以上必要だ。

20 センチュリー・ウーマン

オシャレだった。群像劇?1979年のアメリカ、サンタバーバラが舞台になっていて。L.A までライブを見に行ったりとか、けっこう音楽的な話が多くて、当時のリアルなのかはわからないけど、トーキング・ヘッズ VS ブラック・フラッグ 的なバンドシーンの構図とか知らなかったのでおもしろかった。日常を細切れにしてちょいちょいおもしろい感じとかは、「この世界の片隅に」ぽさもあったり、でも基本はすごいオシャレ。さすがに、眠い感じもあったけど、僕がもし20代前半ならだいぶ好きな映画だなと思った。

シンプルの正体 ディック・ブルーナのデザイン展

f:id:nakagaw:20170704183545j:plain

吸い寄せられるようにいつも、天神イムズに行く、なぜかはわからない。8F の三菱地所アルティアムにふらっと行くと、だいたいいい感じの展示がやってる。

今回は、ディック・ブルーナの「シンプルの正体」という展示がやっていた。次は、tupera tupera の展示をやるみたいでうらやましい。

ディック・ブルーナのイラストは、普通にペンとかで書いてるもんだと思っていたけど、原画は、筆で点描のようにちょこちょこと筆を進めていて衝撃を受けた、たまたまかもしれないが下書きなしで(そういう映像が流れていた)。それでちゃんと原画をまじまじと見てみると、線がモジャモジャしていた。

シンプルに書いているようで、このディティールに可愛さや親しみやすさが宿っているのか、と思う。

一見すると、筆でちょろっと出ているだけのようにも見えるちょろっ、も、実は、ディック・ブルーナによって、意図的に描かれたちょろなのである。