Вот моя конфигурация виртуального хоста apache 2.4
<VirtualHost *:80>
DocumentRoot /var/www/fd-pro/app-api/public_html
ServerName subdomain.domain.com.au
ServerAlias subdomain.domain.com.au
<Directory /var/www/fd-pro/app-api/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/subdomain-error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/subdomain-access.log combined
</VirtualHost>
Я также включил модуль перезаписи.
А в / var / www / fd-pro / app-api / public_html
есть htaccess, говорящий
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header set Access-Control-Max-Age "1000"
Header set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Но все равно не работает!
Какие-нибудь подсказки, пожалуйста?
Вы не должны использовать .htaccess, если у вас есть доступ к основной конфигурации, добавьте свою конфигурацию в контекст виртуального хоста, и это избавит вас от многих хлопот, но если вы настаиваете.
Чтобы ответить на ваш вопрос: Чего не хватает в вставленном вами .htaccess, так это директивы:
RewriteEngine on
Поскольку загрузки mod_rewrite недостаточно, чтобы «включить» его функциональность на вашем сервере, вы должны добавить эту директиву, прежде чем добавлять какие-либо другие в контексте, в котором вы хотите использовать it.
Чтобы улучшить ваше решение:
Тем не менее, вам даже не нужен этот набор «устаревших» методов для mod_rewrite, поскольку single:
FallbackResource /index.php
на вашем виртуальном хосте будет делать то же самое, без mod_rewrite и без него много директив для одного.