さくらインターネット htaccess の rewriteRule が「一部」効かない…

とあるさくらインターネットのレンタルサーバスタンダードに、
必要に迫られて、phpMyFAQを設置しました。

設置自体は、適当にDB準備して、インストーラ走らせればカンタンに公開できる状態になります。
すばらしき時代です。感謝しきりです。

デフォルトで動作させる場合は、そのままでOKですが、広く見てほしい、ということで、SEOもちょっと考える訳です。

SEOとかいちいちめんどくさいので
まずは出来ることから…管理画面から、
□ mod_rewrite のサポートを使用しますか?
にチェックを入れるだけで、記事を見たりするリンクがSEOフレンドリーになってくれるわけであります。すばらしいですね!

例:
http://example.com/index.php?action=news&newsid=2&newslang=ja

http://example.com/news/1/ja/○○○○○○.html
○○○○○○は、記事のタイトル

たったこれだけで、検索エンジンに優しいURLになってくれるわけですね(^_^)/

しかししかし…実際動かしてみると…

普通のFAQへのアクセスやcategoryへのリンクは、正常に思惑通り動作します。
なぜか、お知らせ(news)の部分だけがNot Foundになってしまいます。

当該部分のRewriteRuleは以下の通り。

RewriteRule category/([0-9]+)/(.+)\.htm(l?)$    index.php?action=show&cat=$1 [L,QSA]
RewriteRule news/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$     index.php?action=news&newsid=$1&newslang=$2 [L,QSA]

1.はカテゴリへのリンク(正常に動く)、2.はお知らせ(404になってしまう…)のリライトルール。
もちろん、直打ちで
http://example.com/index.php?action=news&newsid=2&newslang=ja
でアクセスすると正常に表示されます。

さんざんいろんなパターンで検証したあと、気づいたのが”news”のときだけ適用されない?

たとえばこれを以下のように

RewriteRule newslink/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$     index.php?action=news&newsid=$1&newslang=$2 [L,QSA]
RewriteRule news2/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$     index.php?action=news&newsid=$1&newslang=$2 [L,QSA]

newsの部分を newslink とか news2 とかにすると、正常にrewriteされます。

意味がわからん…

ならば同じ.htaccess を同条件の別アカウントの
さくらのレンタルサーバ スタンダード において動作チェック!
検証用 .htaccess

RewriteEngine On
RewriteBase /
RewriteRule news     http://yahoo.co.jp

これだけ。思惑通りにうごいてくれるならば、
http://example.com/news
にアクセスするとyahooへrewriteされるはずです!

おかしいサーバ(1)
404

検証用の別のサーバ(2)
yahoo

なんでやねん!汗

・・・・・なんででしょう?ググっても解決策は見いだせず…

mod_rewrite使ってインデックスされてしまったからいまさら戻すわけにも行かず、
お知らせはどんどん追加されていって…トップページからのお知らせリンクが全て404に…汗

このままではしばかれてしまうので、対症療法として、やむを得ずphpMyFAQのソースに手を入れて
/news/ と出力されるところを/newslink/と出力されるようにして、
htaccessは news → newslink と書き換えて、とりあえず404地獄からは抜け出すことが出来ましたが、
理由が全くわからない…なんか上位で予約されてる?としても、同じ条件で違う動きをするサーバは困る…怖すぎる。

サポートに問い合わせしてみますが。

なにかご存じの方、教えて下さい。

コメントを残す

メールアドレスが公開されることはありません。