Apache RewriteRule用于禁止除一个以外的所有URL

时间:2018-05-06 13:29:38

标签: apache mod-rewrite

我遇到问题为我的问题找到合适的RewriteRules。

我想在Apache vhost配置中配置规则集。

我的目标是所有网址都以403 Forbidden结束。只有/ api调用应该转到index.php,这是我的symfony项目的入口点。

现在我有以下内容,但它无法正常工作:

        RewriteEngine On
        RewriteCond %{REQUEST_URI} !^/api$
        RewriteRule (.*) - [F]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]

根据此规则,所有呼叫都以403结尾。

另一种方式是:

        RewriteCond %{REQUEST_URI} !^/api$

这样,所有URls都会进入我的symfony项目。除了/ api结束于403.但我不想这样。如上所述,我反过来想要它。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你关闭了。使用原始请求确保用户无法访问index.php

RewriteCond %{THE_REQUEST} ^\S+\s+/api/?(?:\?\S*)?\s
RewriteRule ^ index.php [END]
RewriteRule ^ - [F]