.htaccessの設定で下記のように変換をしています。
<Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> Order deny,allow RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L]
example.com/login → example.com/login.php(アクセスしたいURL)
example.com/login → /home/username/www/login.php(アクセスしたいファイル)
結果は「not found」となってしまいます。
※example.com/login.php にアクセスすると問題なく表示されます。
いろいろ調べて、下記のようにすると動作することがわかりました。
転送先のファイル名を変更するという方法です。
RewriteRule ^([^\.]+)$ $1_file.php [NC,L] example.com/login → /username/www/login_file.php
同様の症状に出くわした人がいました。
http://nymemo.com/sakura/1371/
他のレンタルサーバーも使っていますが、sakuraだけこのような動作になります。
そこでサポートに確認をしたところ無回答の返事が来ました。
大変申し訳ございませんが .htaccess の内容等、お客様にて用意
されたコンテンツにつきましては弊社ではサポートを行うことは
出来ません。ご了承くださいますようお願いいたします。なお RewriteRule に対する弊社独自の設定等は行っておりません。
また他のお客様より同様のお問い合わせは確認できておりません。
同様の問い合わせはないかもしれませんが、同じ症状のリンクは伝えたんですけど…。
sakuraのサポートが言われるように「独自の設定をしていない」という場合、
何が原因でこのような状況になっているのでしょうか?
最後の一行を次のように変更してテストしました。
RewriteRule ^test$ login.php [NC,L]
example.com/test にアクセスをすると「500エラー」が発生しました。
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
サーバーのエラーログには次の情報が残っていました。
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[追記]
テストで一番下の行を次のよう変更してみました。
RewriteRule ^([^\.]+)$ https://www.google.co.jp/?redirect=$1.php [NC,L]
$1がどのような結果で返ってきているのか確認をするのが目的です。
その結果、
転送後にファイルが存在する場合は「NotFound」
転送後にファイルが存在しない場合はGoogleに転送されました。
example.com/login (login.php有り) → NotFound
example.com/dummy (dummy.php無し) → https://www.google.co.jp/?redirect=dummy.php
よろしくお願いします。








回答3件
あなたの回答
tips
プレビュー