这是我的 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]
但它仍然不起作用!
请问有什么线索吗?
答案1
如果您有权访问主配置,则不应使用 .htaccess,请在虚拟主机上下文中添加您的配置,这样可以为您省去很多麻烦,但如果您坚持的话。
回答你的问题: 您粘贴的 .htaccess 中缺少以下指令:
RewriteEngine on
由于加载 mod_rewrite 是不够的,为了在您的服务器中“启用”其功能,您必须在您想要使用它的上下文中添加任何其他指令之前添加此指令。
为了改进您的解决方案:
不过,你甚至不需要那组 mod_rewrite 的“弃用”方法,因为只需要一个:
FallbackResource /index.php
在您的虚拟主机中将会做同样的事情,没有 mod_rewrite,也没有那么多指令。