1

Symfony サイトを GoDaddy 本番サーバーにインストールしました。URL www.amcolan.info/Symphony/web/app.php/index を使用すると正常に動作します。www.amcolan.info/indexとして機能するように設定したい。

GoDaddy コントロール パネルを介して、フォルダー amcolan/Symfony/web を指すようにドメインを変更しました。以前は、私のサイトの作業バージョンを含む /amcolan を指していました。セットアップが完了したら、次の .htaccess ファイルをインストールしました。

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Explicitly disable rewriting for front controllers
    RewriteRule ^/app_dev.php - [L]
    RewriteRule ^/app.php - [L]

    # Fix the bundles folder
    RewriteRule ^bundles/(.*)$ bundles/$1  [QSA,L]

    RewriteCond %{REQUEST_FILENAME} !-f
    # Change below before deploying to production
    RewriteRule ^(.*)$ app.php [QSA,L]
    #RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>

このサイトの別の関連する質問からコードを取得し、目的に合わせて変更しました。オリジナルは Symfony ディレクトリに存在することを意図していました。次に、本番キャッシュをクリアして、ページにアクセスしようとしました。内部サーバー エラーが発生しました。コードにエラーはありますか? すべての実装の 99% がこれを行う必要があると私が想像しているので、これは Sensio によって十分に文書化されていると思うでしょう。今、私はただ苦くなっています。

提案どおり、Symfony に付属の次のコードを試しました。

<IfModule mod_rewrite.c>
    RewriteEngine On

    <IfModule mod_vhost_alias.c>
        RewriteBase /
    </IfModule>

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

私も試しました:

<IfModule mod_rewrite.c>
    RewriteEngine On

    #<IfModule mod_vhost_alias.c>
        #RewriteBase /
    #</IfModule>

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>

両方で以前と同じエラーが発生しました。ディレクトリにアクセスしていることを確認するために、index.php ファイルを追加し、アクセスできるようにしました。

更新 2

goDaddy 固有の問題についてさらに調べたところ、goDaddy フォーラムで、RewriteEngine が既に有効になっているという投稿を見つけました。そのコードを影響なく削除しました。次に、これを試すことにしました:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ http://www.amcolan.info/app.php/index [QSA,L]

私は正しくないと思いますが、それはうまくいきました。app.php/ の後にインデックスなしで最初に試しました。これで symfony にはまりましたが、get エラーが発生しました。null引数が原因のようだったので、インデックスを追加しました。したがって、誰かが www.amcolan.info の後に何を入力しても、インデックスに移動します。Symfony ページに移動したら、サイト内の他のページに移動できます。だから今、私は3つの新しい質問があります:

.htaccess ファイルを読み取るときに、Web サーバーがどこを指しているのか分かりますか? /web ディレクトリにファイルがあると考えるでしょう。フルパスの代わりに app.php を指定するだけでは機能しないため、そうではないはずです。それは私のサイトのベースになりますか?

www.amcolan.info のリダイレクトが成功すると、表示される URL は www.amcolan.info/app.php/index になります。URL に /app.php が表示されないようにしたいのですが、実際の宛先である限り、それは不可能だと思います。それは正しい仮定ですか?

ハードコードされたインデックスではなく、www.amcolan.info/somepage を www.amcolan.info/app.php/somepage に移動するにはどうすればよいですか?

アップデート 3

私は立ち往生していると思ったが、それから私は試した:

RewriteBase /

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

これにより、完全な URL を使用する必要がなくなり、リンク先ページに app.php が表示されなくなりました。新しい問題があります: www.amcolan.info を指定するだけで、上記の get エラーが発生します。www.amcolan.info/somepage を指定すると、インデックスではなく、指定したページに移動するようになりました。もう少し掘り下げて、最後の問題を解決できるかもしれません。

更新 4

ルーティング ファイルに以下を追加して、最後の問題を修正しました。

nopage:
    pattern:  /
    defaults: { _controller: ZetchoAmColAnBundle:Default:index }
    requirements:
        _method:  GET

私は今、幸せなキャンピングカーだと思います。

4

1 に答える 1

1

インデックス アクションは必要ありません。ルート ルーティングのアクションも簡単に構成できます。

最終的に動作する GoDaddy の完全な .htaccess ファイルを次に示します。prod config (app.php) に対してのみ機能し、app_dev.php はうまく機能しませんが、本番環境で使用されるので問題ありません。

DirectoryIndex app.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /app.php/ [QSA,L]
</IfModule>
于 2013-12-02T20:55:40.817 に答える