Nello spazio web del mio cliente devo mettere il mio template avanzato Yii 2 in
/www, la quale NON è la webroot, la webroot è ‘/’, ma non posso modificarla per una lunga serie di ragioni stupide, inoltre essendo su uno shared host possso solo d’accordo col cliente, agire sull’.htaccess a livello radice.
Praticamente per avviare il sito invece che usare
http://www.domain.tld/
sono costretto ad usare
http://www.domain.tld/www/frontend/web/
Cos’ho fatto allora?
- Ho messo nella webroot questo .htacccess
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$ /www/frontend/web/$1 [L]
</IfModule>
# Deny accessing below extensions
<Files ~ "(.json|.lock|.git)">
Order allow,deny
Deny from all
</Files>
# Deny accessing dot files
RewriteRule (^\.|/\.) - [F]
- Ho messo in /www/frontend/web quest’altro .htaccess
Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
- ho configurato l’urlManager per i pretty url in /www/frontend/config/main.php
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
]
Risultato
L’accesso tramite http://www.domain.tld ora funziona
Il problema è che i link, anche se ‘carini’, sono tutti del tipo
http://www.domain.tld/www/frontend/web/site/about
Cosa manca per ‘nascondere’ completamente la parte ‘/www/frontend/web’ ?