如何忽略带参数的1文件的rewriteCondition

时间:2017-08-30 23:52:07

标签: apache .htaccess mod-rewrite

我已经查看了有关堆栈溢出问题的其他建议并尝试了它们但无法使其工作...

案例

我正在升级到mywebsite.comapp.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]

问题

我如何添加一个条件,如果网址为app.mywebsite.com/upgrader.php,它会转到upgrader.php文件,而不是index.html

1 个答案:

答案 0 :(得分:1)

这应该做:

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个条件的情况下运行RewriteRule:文件请求,文件夹请求,升级程序是请求(请注意重写条件中的感叹号!)