Я создал динамический виртуальный хост, используя этот файл конфигурации:
UseCanonicalName Off
<VirtualHost *:80>
ServerName %1.dev
ServerAlias *.%1.dev
ServerAdmin daniel@localhost
VirtualDocumentRoot /home/daniel/public_html/%1
LogLevel error rewrite:trace8 proxy:trace2
ErrorLog /home/daniel/public_html/error.log
CustomLog /home/daniel/public_html/access.log combined
<Directory ~ "/home/daniel/public_html/.*">
Options Indexes FollowSymlinks Multiviews
AllowOverride All
Require all granted
DirectoryIndex index.php index.html
RewriteEngine On
<FilesMatch "\.php$">
SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost:9000"
</FilesMatch>
</Directory>
</VirtualHost>
Это прекрасно работает с php-скриптами, но я не могу заставить его работать с URL-адресами SEF, такими как те, которые используются WordPress (например, http // mysite.dev / blog return 404).
Любые идеи об этом?
Проверьте конфигурационный файл apache и включите переписывание для всех.
Откройте терминал и напишите: nano /etc/apache2/apache2.conf
Найдите эти строки и напишите именно этот код :
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Изменить AllowOverride none на AllowOverride All.
Чтобы выполнить эту работу, вам нужно включить модуль перезаписи в Apache.
См. это: https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite- for-apache-on-ubuntu-14-04
После того, как у вас есть модуль, вам понадобится что-то вроде этого (пример Wordpress):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Это должно быть помещено либо в файл .htacccess или файл vhost.
Проверьте конфигурационный файл apache и включите переписывание для всех.
Откройте терминал и напишите: nano /etc/apache2/apache2.conf
Найдите эти строки и напишите именно этот код :
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Изменить AllowOverride none на AllowOverride All.
Чтобы выполнить эту работу, вам нужно включить модуль перезаписи в Apache.
См. это: https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite- for-apache-on-ubuntu-14-04
После того, как у вас есть модуль, вам понадобится что-то вроде этого (пример Wordpress):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Это должно быть помещено либо в файл .htacccess или файл vhost.