使用.htaccess重定向网站但排除一个文件夹

Pau*_*vis 56 apache .htaccess redirect

我想301重定向整个网站,但排除根目录中存在的名为'uploads'的文件夹中的所有内容.我已经用谷歌搜索了,但没有想出任何东西,或者我认为我所看到的是对的.

我们可以破解这个吗?

Gum*_*mbo 72

试试这个mod_rewrite规则:

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

此规则确实匹配任何以任何一个开头的URL路径/uploads/uploads/(/由于在.htaccess文件中使用时删除路径前缀而导致模式中缺少前导)并将请求重定向到example.com上的相应路径.


Pse*_*nja 55

简单的回答我偶然发现了自己.

在任何其他呼叫之前的顶部添加以下内容

RewriteRule ^(uploads) - [L]
Run Code Online (Sandbox Code Playgroud)

  • 如果有人好奇 [L] 的作用:http://httpd.apache.org/docs/2.4/rewrite/flags.html#flag_l (2认同)

Dom*_*ger 25

我想你想要这个:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/uploads/
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

如果你得到,500 Internal Error那么仔细检查你和}之间的空格!在第二行.


sta*_*een 11

基于模态别名的解决方案

重定向除特定文件夹以外的所有内容

将以下行添加到root/.htaccess:

RedirectMatch 301 ^/((?!uploads).*)$ http://newdomain.com/$1
Run Code Online (Sandbox Code Playgroud)

这会将所有网页(不包括/ uploads/*)从旧域重定向到newdomain.

  • 这样完美!非常有用,因为由于未在客户服务器上启用,所以我无法使用mod_rewrite (2认同)
  • 这是我针对虚拟 `http` 主机的解决方案,其唯一目的是包含 `certbot certonly --webroot` 的 `.well-known` 目录(让我们加密): `RedirectMatch Permanent ^/((?!\.well -已知)(/.*)?)$ https://%{SERVER_NAME}/$1` (2认同)