.htaccess:重写匹配所有流量除了两个URL

时间:2014-10-06 15:08:21

标签: regex apache .htaccess mod-rewrite

我目前正在使用以下方法将我网站上的用户从根目录重定向到子目录,如下所示:

RewriteEngine on

############################################
## Forcing https

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://website.com/$1 [R,L]

############################################
## Capturing all traffic and redirecting it to necessary subdirectory

RedirectMatch ^/$ /subdirectory/

这很有效,我仍然可以使用 / admin (完整网址:/index.php/admin)的例外情况之一。我没有必要指定任何例外 - 它只是起作用。

现在我正在尝试访问我的API网址,并设法将其重定向到/子目录而不是允许它。网址: http://website.com/index.php/api/action

我发现有一种方法可以使用 RewriteRule 方法排除目录,但是这适用于 RedirectMatch 方法呢?

RewriteEngine on
RewriteRule !^uploads($|/) http://example.com%{REQUEST_URI} [L,R=301]

1 个答案:

答案 0 :(得分:1)

最好坚持使用mod_rewrite,而不是在此处使用基于mod_alias的规则:

RewriteEngine on

############################################
## Forcing https

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://website.com/$1 [R,L]

############################################
## Capturing all traffic and redirecting it to necessary subdirectory
RewriteCond %{THE_REQUEST} !\s/+(index\.php/)?(api|admin) [NC]
RewriteRule ^/?$ /subdirectory/ [L,R]