Назад | Перейти на главную страницу

htaccess не работает на виртуальном хосте apache 2.4

Вот моя конфигурация виртуального хоста 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>

Я также включил модуль перезаписи.

И есть htaccess в / var / www / fd-pro / app-api / public_html

говоря

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 недостаточно, чтобы «включить» его функциональность на вашем сервере, вы должны добавить эту директиву, прежде чем добавлять какие-либо другие в контексте, в котором вы хотите ее использовать.

Чтобы улучшить ваше решение:
Тем не менее, вам даже не нужен этот набор "устаревших" методов для mod_rewrite, так как имеется единственный:

FallbackResource /index.php 

в вашем виртуальном хосте будет делать то же самое, без mod_rewrite и без множества директив.