0

望ましい目標: 既存の Web サイトで、新しい Web サイトを実装する必要があります。新しいサイトは「ステージング」実装する必要があるため、「dev」、「test」、および「site」用のサブディレクトリが作成されます。3 つのサブディレクトリはすべて、異なるユーザー アカウントとデータベースが使用されていることを除いて、同一の php/mvc 実装を含んでいます。ルートディレクトリに存在する現在のサイトも同様に機能し続ける必要があります。

現在の構成の試行: 現在の Web サイトのルート ディレクトリに .htaccess ファイルを配置しました。

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^/dev(.*)$ <url>/dev/$1
RewriteRule ^/test(.*)$ <url>/test/$1
RewriteRule ^/site(.*)$ <url>/site/$1

注: 代わりに、完全な URL があります。これにより、「dev」を含むすべての URL が /dev/$1 にリダイレクトされ、$1 には残りのすべてのパラメーターが含まれます。

結果: 「test」または「site」の「dev」のホームページが呼び出されたとき。ホームページは問題なく表示されます。

問題: メニュー項目またはリンクをクリックするたびに、結果の URL が次の正しい URL に書き換えられます: /dev/volunteering?page=volunteering&lang=nl

しかし、エラーメッセージ 404 が表示されます。

The requested URL /dev/volunteering was not found on this server.

これはカスタム mvc の実装に関するものであることに注意してください。

必要なヘルプ: この種のリクエストを現在の Web サイトで処理するべきではなく、「dev」、「test」、または「site」に応じて、リクエストを適切な Web サイトに転送する必要があることをブラウザに理解させるには、どのような変更が必要ですか? mvc 実装が理解できるような方法でサブディレクトリを作成しますか?

4

1 に答える 1

0

これを試してください:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(dev)(volunteering([^?]*)) $1/$2?page=$2&lang=nl [L,NC]
RewriteRule ^(test)(volunteering([^?]*)) $1/$2?page=$2&lang=nl [L,NC]
RewriteRule ^(site)(volunteering([^?]*)) $1/$2?page=$2&lang=nl [L,NC]
于 2013-03-03T17:18:39.507 に答える