Apache 如何忽略带参数的1个文件的重写条件

Apache 如何忽略带参数的1个文件的重写条件,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我已经看过了关于堆栈溢出问题的其他建议,并尝试了它们,但无法使其发挥作用 案例 我正在从mywebsite.com升级到app.mywebsite.com,并希望将app.mywebsite.com上的所有访问重定向到index.html(spa),但当访问者来自mywebsite.com时需要运行的脚本除外,该脚本位于app.mywebsite.com/upgrader.php 示例.htaccess RewriteEngine On # Ignore existing files or u

我已经看过了关于堆栈溢出问题的其他建议,并尝试了它们,但无法使其发挥作用

案例

我正在从
mywebsite.com
升级到
app.mywebsite.com
,并希望将
app.mywebsite.com
上的所有访问重定向到
index.html
(spa),但当访问者来自
mywebsite.com
时需要运行的脚本除外,该脚本位于
app.mywebsite.com/upgrader.php

示例.htaccess

RewriteEngine On

# Ignore existing files or upgrader.php
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} ^/upgrader\.php$ <--- not working
RewriteRule ^ - [L]

# Redirect all other requests
RewriteRule ^ index.html [L]
重新编写引擎打开
#忽略现有文件或upgrader.php
RewriteCond%{DOCUMENT_ROOT}%{REQUEST_URI}-f[或]
重写cond%{DOCUMENT\u ROOT}%{REQUEST\u URI}-d
RewriteCond%{REQUEST_URI}^/upgrader\.php$这应该可以:

RewriteEngine On
# Ignore existing files or upgrader.php
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !^/upgrader\.php$
RewriteRule ^ /index.html [L]

这将使用与您的逻辑相反的逻辑:只有在满足所有3个条件时,它才会运行重写规则:文件未被请求,文件夹未被请求,升级程序未被请求(请注意重写条件中的感叹号!)

apache版本是什么?谢谢,我会试试这个,但是你能指出我创建的东西有什么不同吗?谢谢:)不带扩展也可以重写吗?如果是这样,它只是在做
^/升级程序$
是apache的否定,其余的只是一个正则表达式(您可以玩一下,看看会发生什么)