web-dev-qa-db-ja.com

Symfony2のURLから「web / app_dev.php」を削除する方法

私は最初のSymfony2プロジェクトを作成しました。しかし、URLの「/web/app_dev.php」の部分は私を困らせます。これを行うことができるはずですなし仮想ホスト...

しかし、これを.htaccessで試すと、常にルーティングエラーが発生し、「web /」が常にURLに追加されます...

編集:プロジェクト全体も「symfonyTest」という名前のサブディレクトリにあります。デモページのURLは「http://localhost/symfonyTest/web/app_dev.php/demo/」で、「http:// localhost/symfonyTest/demo /」になるはずです。リンクにもこの構文が必要です。これは可能ですか?

19
phil-opp

Symfony2には、デバッグモードが組み込まれています。これは、app_dev.phpオプションを使用してURLにアクセスするときに使用します。デバッグモードのキャッシュは、ブラウザーをURLに誘導してapp_dev.phpを除外することでアクセスできるプロダクションモードよりも大幅に少なくなります。このURLにアクセスできない場合は、おそらく本番環境のキャッシュをクリアする必要があります。

キャッシュをクリアするには、ターミナル(コマンドコンソール)をSymfonyプロジェクトのルートに移動します。そこから次のコマンドを入力します。

php app/console cache:clear --env=prod --no-debug

Symfony 3の以下のコメントに従って、これは移動しました:

php bin/console cache:clear --env=prod --no-debug

これにより、プロダクションキャッシュがクリアされ、app_dev.phpなしでURLにアクセスできるようになります。

URLのWeb部分についても同様です。これを削除する最も簡単な方法は、プロジェクトのWebルートをWebフォルダーに設定することです。仮想ホストを使用してApacheでこれを行うのが最善ですが、htaccessで行う方法があります。

このリンクは、htaccessファイルを使用してウェブルートを変更する方法を説明しています。 http://kb.siteground.com/how_to_change_my_document_root_folder_using_an_htaccess_file/

お役に立てれば!

21
Shattuck
<VirtualHost *:80>
    DocumentRoot "path_to_symfonyTest/web"  
    ServerName "symfonyTest"  
    <Directory "path_to_symfonyTest/web">
        DirectoryIndex app_dev.php
        AllowOverride All
        Order allow,deny
        Allow from all
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ app_dev.php [QSA,L]
        RedirectMatch permanent ^/app_dev\.php/(.*) /$1
    </Directory>
</VirtualHost>

それは私のhttpd.confの一部です

11
usrmrz

私もこの問題を抱えていました。私の設定を見て、試してみてください

私の.htaccess内:

こんにちは、私もこの問題を抱えています。そして、「在庫」の.htaccessが問題のようです。私は自分の環境でこれを解決しました。ここに私の.htaccessとメモがあります:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]
    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app_dev.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]    ##### this is the part that you     should Tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
    RewriteRule .? %{ENV:BASE}/app_dev.php [L]        ##### this is the part that you should Tweak, have the .htaccess point the request to app_dev.php, since the routing.yml is empty initially
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>
        # When mod_rewrite is not available, we instruct a temporary redirect of
        # the startpage to the front controller explicitly so that the website
        # and the generated links can still be used.
        RedirectMatch 302 ^/$ /app.php/
        # RedirectTemp cannot be used instead
    </IfModule>
</IfModule>

/ etc/Apache2/sites-availableの「symfony」エントリ内:

<VirtualHost 127.0.1.15>
    ServerAdmin webmaster@localhost
    ServerName symfony
    DocumentRoot /var/www/Symfony/web
    DirectoryIndex app.php
    <Directory /var/www/Symfony/web>
        Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

ErrorLog ${Apache_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>
10

Apache仮想ホストを使用すると、希望どおりに動作させることができます。これが私のxamppからの仮想ホストの例です。

<VirtualHost *:80>
    ServerName myurl.local

    # Basic stuff
    DocumentRoot "C:/path/to/symfony/web"
    DirectoryIndex app.php
    <Directory "C:/path/to/symfony/web">
        AllowOverride All
        Allow from All
    </Directory>
</VirtualHost>

Apacheを再起動したら、 http://myurl.local を使用してプロジェクトにアクセスできます(C:\Windows\system32\drivers\etc\hosts!の下のhostsファイルを設定することを忘れないでください)。開発環境(app_dev.php)がURLに表示されないようにするには、DirectoryIndexをapp_dev.phpに変更します。

5
Sgoettschkes
  1. // modの書き換えを有効にする
    Sudo a2enmod rewrite

  2. AllowOverride Noneのすべての出現箇所をAllowOverride Allで変更
    ファイル:(/ etc/Apache2/Apache2.conf)または(/ etc/Apache2/sites-available/000-default.conf)-for /etc/Apache2/Apache2.confファイルで作業します。

例:

<Directory /var/www/web/>
        # enable the .htaccess rewrites
        Options Indexes FollowSymLinks
        #AllowOverride None #commented
        AllowOverride All
        Require all granted
</Directory>
  1. // Apacheサービスを再起動します。
    SudoサービスApache2の再起動
3
Jzapata

.htaccessファイルはwebの親フォルダにありますが、そうすることはお勧めしません。そのフォルダーには、webとは別に、完全なソース、バイナリー、ベンダーなどが含まれているため、webフォルダーへのWebアクセスを許可し、Webアクセスを拒否するには、多くのルールを適用する必要があります。ほかのすべて。

だから、それは可能ですが、私は間違いなくvhostソリューションに行きます...

2
Jovan Perovic

.htaccessファイルの内容をyour-website.confにコピーするだけです

tAGディレクトリ内

0
user2948817