web-dev-qa-db-ja.com

Symfony4ルーターからindex.phpを削除する方法?

Webサーバーの構成方法については、Symfony 4のドキュメントに従っています。

https://symfony.com/doc/current/setup/web_server_configuration.html

Apache 2.4構成の.confファイルは、ドキュメントに記載されているとおりです。ここにその一部をコピーしています:

<Directory /var/www/project/public>
    AllowOverride None
    Require all granted
    Allow from All

    <IfModule mod_rewrite.c>
        Options -MultiViews
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
</Directory>

プラットフォームに移動すると、すべてが正常に機能しますが、ページに移動するとすぐに404エラーが表示されます。 URLにindex.phpを追加すると、正常に動作します。何が起こっているのか理解してくれませんか。

例:私がいるとき http://myplatform.com/

このページでメールアドレスを保存できます。 http://myplatform.com/index.php/saveEmail にアクセスすると機能しますが、私のページから、リンクによって http://myplatform.com/saveEmailにリダイレクトされます そしてそれは動作しません。

http://myplatform.com/index.php に移動すると、すべて正常に動作します。

URLからindex.phpを削除するにはどうすればよいですか?

ありがとう!

6
Miles M.

私はsymfonyについて知りません。しかし、それはすべてのApache2とphpプロジェクトで動作するはずです。


まず、次の2つのことを行う必要があります。

  1. PHPリライトモジュールが有効になっているかどうかを確認する必要があります。あなたはphpinfo()でそれを行うことができます。これをファイルinfo.phpに書き込んで、ブラウザで開きます: http://localhost/info.php

    次に、mod_rewriteを検索します。このページにmod_rewriteと表示されている場合、mod_rewriteが有効になっています。

  2. mod_rewriteが有効になっていない場合は、有効にします。次のコマンドを使用して、AbuntuのUbuntu 18.04で有効にしました:$ Sudo a2enmod rewrite。次に、Apache2を再起動します$ systemctl restart Apache2

mod_rewriteが有効になっている場合、他の構成が機能します。


  1. 次に、AllowOverride Allファイルに.confを追加します。

    <Directory /var/www/project/public>
        AllowOverride All
    </Directory>
    

  1. 次に、.htaccessファイルをプロジェクトのルートディレクトリに追加します。

    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        # Send would-be 404 requests to Craft
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule (.+) index.php?p=$1 [QSA,L]
    </IfModule>
    

注:.htaccessファイルを/var/www/project/.htaccessまたは/var/www/project/public/.htaccessに追加してみてください。何がうまくいくかわかりません。

11
mahfuz

このApache構成には、すべてのリクエストに対するindex.phpへのリダイレクトが含まれていません。 2つの選択肢があります。

•同じページで、この文の後にこのリダイレクトを含む構成があります。「次の最適化された構成を使用して、.htaccessサポートを無効にし、Webサーバーのパフォーマンスを向上させます:」

•.htaccessを使用してこのリダイレクトを処理する場合は、composer require Apache-packを実行するだけです。このコマンドは、.htaccessをパブリックディレクトリにインストールします。

4
Florian Hermann

この方法で変更すると、おそらく機能しますが、

AllowOverride All
Order Allow,Deny
0
Deniz Aktürk

問題が見つかりました。 <Directory /var/www/project/public>が間違ったディレクトリを指しています。

0
Miles M.