1

私は現在、この CakePHP セットアップを持っています: CakePHPの可変プレフィックスルーティング

ワイルドカード サブドメインを処理するための DNS*.example.comおよび Apache エントリは既に存在します。残念ながら、CakePHP のデフォルトの .htaccess をワイルドカード サブドメイン コードとマージできないようです。

以下は、CakePHP のデフォルトの .htaccess コードです。

RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

私がやりたいことの例: example.com/controller/action/a-> example.com/global/controller/action/a(globalはリテラルです)

X.example.com/controller/action/a/b/c->example.com/X/controller/action/a/b/c 基本的に、X を最初の「ディレクトリ」にしてから、残りの URL を維持します。(Xは任意の英数字の文字列)

フォルダーXは絶対に存在しないことに注意してくださいapp/webroot。一度アクセスすると、単に CakePHP に書き換えられます。私は CakePHP 部分の動作を変更したくありません。上記の URL の例を、そのページにアクセスするのと "同等" に書き換える必要があるだけです。その後、CakePHP のhtaccessエントリによって処理されます。

参考までにapp/webroot/.htaccess

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
4

1 に答える 1

0

このようなことを意味しますか?(上記の app/webroot ルールの上に移動します):

RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.example\.com$ [NC]
RewriteRule ^controller/(.*)$ /%1/controller/$1 [L]

これが最初に適用され、次に app/webroot ルールが有効になり、次の場所を指す必要があります/app/webroot/%1/controller/$1

于 2012-08-16T00:52:28.920 に答える