我在www.foo.com/wp/上安装了一个博客,并希望所有转到任何不以/ wp /开头的页面的请求都被重定向到www.foo.com/wp/(没有保存网址。)
E.g:
www.foo.com/bar/baz/hello.gif > www.foo.com/wp/
另外,与此同时,我需要URL来拥有www。如果没有添加(这可能是我的规则混淆的地方)
目前,我有:
RewriteCond %{HTTP_HOST} !^www.foo.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.foo.com/$1 [R=permanent]
RewriteRule ^(?!wp)/(.*)$ http://%{HTTP_HOST}/wp/($2) [R=permanent]
但我认为目前这已完全打破。
非常感谢。
答案 0 :(得分:1)
RewriteCond %{HTTP_HOST} !^www.foo.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule (.*) http://www.foo.com/$1 [R=permanent,L]
RewriteRule ^(?!wp/)(.*) http://%{HTTP_HOST}/wp/$1 [R=permanent]
.*
。(?!)
不是捕获构造,您可以通过编写$1
而不是($1)
替换捕获的模式。编辑:显然对于OP,最后一条规则不起作用,无法排除以/wp/
开头的情况,这对我来说没有任何意义。这是尝试解决方法:
RewriteCond %{HTTP_HOST} !^www.foo.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule (.*) http://www.foo.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_URI} !^/wp/
RewriteRule (.*) http://%{HTTP_HOST}/wp/$1 [R=permanent]
答案 1 :(得分:0)
请尝试以下规则:
RewriteCond %{HTTP_HOST} !^www.exmaple.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^ http://www.example.com%{REQUEST_URI} [R=301,L]
RewriteCond %{THE_REQUEST} ^GET\ /wp/
RewriteRule ^wp/(.*) /$1 [R=301,L]
RewriteRule !^wp/ wp%{REQUEST_URI} [L]
第一条规则是主机名。第二种是从外部删除/wp
路径前缀。第三种是再次为内部重定向添加前缀。