dポイントプレゼントキャンペーン実施中!

いつもお世話になってます。
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]

という記述があり、ローカルに移すのにどう直せばいいのかよくわかりません。
他に必要な情報があれば教えてください。調べます。

よろしくお願いします。

A 回答 (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]
    • good
    • 0

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

もしくは追加
    • good
    • 0

http://example.com/a/action
とアクセスすると、/act/a/action.phpに

RewriteEngine on
RewriteRule ^action$ action.php [L]

これでどうでしょうか
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!