正则表达式 HTAccess 不工作

Regex HTAccess Not functioning

所以我的 .htaccess 文件中有这条规则。它正确地停止了对 "files" 目录的重写,但停止了对其他目录的 none 的重写。我希望这不会重定向文件、pdf、img 和帐户目录。

RewriteCond %{REQUEST_URI} !^/(files|pdf|img|account).*$ [NC]

我也试过

RewriteCond %{REQUEST_URI} ^/[^(files|pdf|img|account)].*$ [NC]

这会停止重定向所有请求的目录,也会停止重定向移动站点,所以我认为这会破坏我的整个规则集。

我的规则集有点长,所以要从我们的主站点重定向到移动设备 m.mainsite。如果看到整套有用,请告诉我。

谢谢。

尝试使用 THE_REQUEST 变量代替 REQUEST_URI 变量,因为 THE_REQUEST 变量表示 Apache 从您的浏览器收到的原始请求,并且在执行某些重写规则后它不会被覆盖。

RewriteCond %{THE_REQUEST} !/(files|pdf|img|account) [NC]

您可以使用这两个条件语句,而不仅仅是一个。一个用于目录,然后一个用于目录中的任何内容,例如文件或另一个目录。

RewriteCond %{REQUEST_URI} !^/(files|pdf|img|account)/?$ [NC]
RewriteCond %{REQUEST_URI} !^/(files|pdf|img|account)/(.*)$ [NC]