重定向目录中的所有页面,除了一个子目录.htaccess

时间:2015-10-19 17:14:52

标签: apache .htaccess mod-rewrite url-rewriting url-redirection

我希望仍然从旧域上的子目录提供一个URL,但是将所有其他URL从父目录重定向到新域。

www.olddomain.co.uk/directorya/directoryb - >没有重定向 www.olddomain.co.uk/directorya - > www.newdomain.co.uk/directorya

如果使用尾部斜杠键入URL,则此方法有效

RewriteCond %{REQUEST_URI} !^/directorya\/directoryb [NC]
RewriteRule ^(.*)$ http://www.newdomain.co.uk/ [L,R=301]

所以http://www.olddomain.co.uk/directorya/directoryb/有效但http://www.olddomain.co.uk/directorya/directoryb失败。

尝试在最后添加$和其他内涵并尝试

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

来自Redirect entire site except one directory to a new site - apache .htaccess

要让http://www.olddomain.co.uk/directorya/directoryb/http://www.olddomain.co.uk/directorya/directoryb重定向,我需要做些什么? (所有其他http://www.olddomain.co.uk页面都转到http://www.newdomain.co.uk

由于我不明白的原因http://www.olddomain.co.uk/directorya/directoryb访问Google并且没有重定向

1 个答案:

答案 0 :(得分:1)

尝试使用THE_REQUEST变量并确保这个非常第一条规则

RewriteCond %{THE_REQUEST} !\s+/+directorya/directoryb [NC]
RewriteRule ^ http://www.newdomain.co.uk/? [L,R=301]

清除浏览器缓存后进行测试。