2017-10-16 7 views
1

J'ai la configuration d'un domaine à mon projet yii2 app-avancé. Avant la configuration fonctionne bien, mais maintenant je ne pouvais pas gérer le lien vers un fichier image. Quand j'ai essayé de télécharger le fichier par http://{domain}/icons/logo.svg lien, j'ai erreur 404:404 Non trouvé pour le lien de fichier à Yii2 app-avancé avec la configuration d'un seul domaine

Not Found 

The requested URL /icons/logo.svg was not found on this server. 

Mais http://{domain}/frontend/web/icons/logo.svg œuvres. Le fichier existe dans le dossier shown. Comment corriger les fichiers de configuration apache au projet pour utiliser des liens courts.

Voici ma config:

  • apache:

    <VirtualHost *:80> 
        ServerName test.dev 
    
        ServerAdmin [email protected] 
        DocumentRoot /home/user/Projects/test-app/ 
    
        <Directory /home/user/Projects/test-app/> 
         Require all granted 
         AllowOverride All 
        </Directory> 
    </VirtualHost> 
    
  • base de

    .htacces:

    Options -Indexes 
    IndexIgnore */* 
    
    Options +SymLinksIfOwnerMatch 
    
    <IfModule mod_rewrite.c> 
    RewriteEngine on 
    
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ 
    RewriteRule ^(.*)$ http://%1/$1 [L,R=301] 
    
    RewriteRule ^admin(.{2,})?(/)?$ /backend/web/$1 [L,PT] 
    RewriteRule ^([^/].*)?$ /frontend/web/$1 
    </IfModule> 
    
  • frontend .htacces:

    Options -Indexes 
    
    <IfModule mod_rewrite.c> 
    RewriteEngine on 
    
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule . index.php 
    </IfModule> 
    
    DirectoryIndex index.php 
    
    • également activé dans le fichier de configuration frontend\config\main.php:
'components' => [ 
    'request' => [ 
     'csrfParam' => '_csrf-frontend', 
     'baseUrl' => '', 
    ], 
    'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'rules' => [ 
      '' => 'site/index', 
      'sitemap' => 'sitemap/index', 
     ], 
    ], 

Répondre

1

Je trouve le problème. Apache possède son propre répertoire icons pour ses propres icônes. Et cet alias peut être écrasée que la configuration du serveur à /etc/apache2/mods-available/alias.conf

problème décrit ici: https://www.electrictoolbox.com/apache-icons-directory/

Donc, si vous voulez utiliser le nom de dossier icônes, vous devriez le mettre à subdirecotory, par exemple img/icons/.... Ou utilisez un autre nom de répertoire.

0

Ajouter cette ligne à votre fichier .htaccess:

RewriteRule ^icons/(.*)$ frontend/web/icons/$1 [L] 
+0

Sardor Dushamov, votre variante ne fonctionne pas aussi. A côté, décrit à la configuration de la question fonctionne très bien dans d'autres projets yii2 sur mon PC. Peut-être, une erreur est plus générale? – Oleg