2

これはかなり一般的な問題のようですが、フォーラムで決定的な解決策を見つけることができません。

私のYiiはこのように設定されています

/webroot/framework
/webroot/app
/webroot/requirements

appフォルダーはyiiアプリケーションをホストします

ただし、私のURLは次のようになります:site [dot] com / app / site / index

URLから「アプリ」の部分を削除するにはどうすればよいですか。

.htaccessファイルをwebrootフォルダーに移動しようとしましたが、リダイレクトされますが、「app」がURLに表示されます。

/webroot/.htaccessの内容は次のとおりです

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /

  # need this for AMZN ELB or get a infinite redirect loop 
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteCond %{SERVER_NAME} !^localhost$
  RewriteRule (.*) %{HTTP_HOST}%{REQUEST_URI} [L]

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

  RewriteRule . /app/index.php 
</IfModule>

webrootを/webroot/ appに変更できれば簡単ですが、それを制御することはできません。助けてくれてありがとう。

これはappfogで起動されるため、Webルートを制御したり、フレームワークフォルダーをWebルートの1つ上のディレクトリに配置したりすることはできません。

4

3 に答える 3

2

私はconfig/main.phpのような設定に行き、次のように置くことでそれを解決しました:

'request'=>array(
        'baseUrl'=>'',

    ),
     'urlManager'=>array(
        'baseUrl'=>'',
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'appendParams' => true,
        'rules'=>array(

        ),
    ),  'request'=>[
        'baseUrl'=>'',

    ],
     'urlManager'=>array(
        'baseUrl'=>'',
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'appendParams' => true,
        'rules'=>array(

        ),
    ),

Yiiに戻って、この問題に再び直面しました

于 2014-02-28T19:18:37.343 に答える
1

すべてのファイルを/webroot/appから/webroot/に移動できるかもしれません(そしてyiiを/ webroot / yiiに配置します)。

于 2012-12-02T17:57:36.270 に答える
1

同様の質問を投稿しました。ただし、「アプリ」のコンテンツをwebroot /に配置することはできません。これは、移植性が必要であり、近い将来、同じwebroot/フレームワークで実行される他の「アプリ」をwebroot/に配置するためです。

example.comをexample.com/appにリダイレクトし、URLから/app部分を削除しました。デフォルトのコントローラー/アクションにリダイレクトされます。しかし、(例)example.com/site/loginへのリンクをクリックすると、デフォルトのコントローラー/アクションが表示されます。

私のwebroot/.htaccessは次のようになります。

RewriteEngine on

RewriteCond $1 !^application/
# if a directory or a file exists, use it directly
RewriteCond %{DOCUMENT_ROOT}/application/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/application/$1 -d
RewriteRule ^(.*)$ application/$1 [L]

# otherwise forward it to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# RewriteRule ^.*$ application/index.php does not 'remove' the directory with this??
RewriteRule ^$ application [L]

多分それはあなたを助けますか?そして、私は.htaccessの専門家ではないので、今までにもっと良い解決策を見つけたかどうか疑問に思っていましたか?

于 2013-05-08T06:48:50.617 に答える