mod_rewrite 不能与 RewriteEngine on before 语句一起使用

问题描述

我继承了一个具有以下 .htaccess RewriteRules 的 Web 应用程序

Options FollowSymLinks
RewriteRule .* - [E=CAMPAIGN_MODE:live]

RewriteEngine on
RewriteCond "%{ENV:CAMPAIGN_MODE}" "^live"
RewriteRule ^r/([A-Za-z]{2})/([A-Za-z0-9_]+)$   ?action=saveReferral&code=$2&lang=$1
RewriteRule ^crossfit(/.*)?$    /?lang=cf [R=301,L,QSA]
RewriteRule ^classic(/.*)?$     /?lang=en [R=301,QSA]
RewriteCond "%{ENV:CAMPAIGN_MODE}" "^offline"
RewriteCond %{REQUEST_URI} !^/admin/
RewriteCond %{REQUEST_URI} !^/dashboard/
RewriteCond %{REQUEST_URI} !^/includes/
RewriteCond %{REQUEST_URI} !^/images/
RewriteCond %{REQUEST_URI} !^/styles/
RewriteRule ^(.*)$ https://www.somewebsite.com/en-gb/ [R=301]

一个 RewriteRule 旨在将所有请求重写到 index.PHP 文件,但自然不应将请求重写到磁盘上的文件

上面的 .htaccess 按预期工作 - 直到我将 RewriteEngine 移到所有语句的前面。然后,每个请求都被重写到 index.PHP,甚至包括到磁盘上的文件

我的问题是:为什么上面的 .htaccess 完全适用于该位置的 RewriteEngine 语句?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)