• ベストアンサー

mod_rewite?でのリダイレクトについて

いつもお世話になってます。 XAMPP1.68+Smarty環境です。 既にリリースされているシステムにテスト環境がないので、 ローカルにテスト環境を作ろうと奮闘しています。 /docment_root ┣/act ←PHPスクリプトファイル ┃┣/a ┃┃┣index.php ┃┃┗action.php ┃┣/b ┃┃┗index.php ┣/tpl ←Smartyテンプレート ┗index.php というディレクトリ構造で、 http://example.com/a/ とアクセスすると、/act/a/index.phpに、 http://example.com/a/action とアクセスすると、/act/a/action.phpに アクセスできるようにするためには、何をどのように設定すればよいのでしょうか? cakePHPでも同じ原理(だと思う)なので、mod_rewiteかなと思い、 リリースされているサーバのhttpd.confを見ているのですが、 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [QSA,L] という記述があり、ローカルに移すのにどう直せばいいのかよくわかりません。 他に必要な情報があれば教えてください。調べます。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yuuki0229
  • ベストアンサー率70% (33/47)
回答No.3

リクエストは/index.phpを経由し、その中でREQUEST_URIを元に次の/act/a/action.php等をincludeしてるのではと推測します。 そのためrewriteruleの記述が足りないのではなく、以下のような所で問題になっていないか確認した方がよさそうです。 ・システムの設定ファイルに本番サーバのパスが入っている ・テスト側でmod_rewriteや.htaccessが効いていない ・ディレクトリ構造が間違っている(現在の図ですと外部から生のsmartyテンプレートが参照できそうな位置にあります) ・XAMPP用の何らかの設定が競合している(XAMPPは使わないので想像です…) (システムとしては恐らく正しく動かないと思いますが) 質問の中の条件を満たすにはこんな感じで可能です。 .htaccessファイル用に相対パスにしています。 RewriteEngine On RewriteRule ^([^/]+)/?$ act/$1/index.php [L] RewriteRule ^([^/]+)/([^/]+)/?$ act/$1/$2.php [L]

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • cybert
  • ベストアンサー率56% (18/32)
回答No.2

mod_rewrite を使わなくてもDirectoryIndexのindexをactionにすれば良いと思う。もしくは追加

すると、全ての回答が全文表示されます。
  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.1

http://example.com/a/action​ とアクセスすると、/act/a/action.phpに RewriteEngine on RewriteRule ^action$ action.php [L] これでどうでしょうか

すると、全ての回答が全文表示されます。

関連するQ&A