2012-03-05 71 views
0

我需要的是重定向从某个目录到父目录的索引文件的所有内容。浏览器中的URL也必须改变,只是直接修改。我该怎么做呢?我试过mod_rewrite - 简单重定向到父目录

RewriteRule ^(.*)/?$ ../ [R] 

但它显示一个错误和实际的系统路径!

回答

3

使用绝对HTTP URL最容易实现:

# We assume this is in .htaccess inside the directory to be redirected 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/parent 
RewriteRule ^(.*)?$ http://%{HTTP_HOST}/parent [R=301,QSA,L] 

注意,QSA加入保存查询字符串,但可以如果被删除你不想要它。

+0

谢谢,虽然使用绝对URL打击,但有点作品。另外,由于父目录也使用URL重写,并且使用RewriteRule ^(。*)/?$ index.php?where = $ 1 [QSA,L],当URL由您写入的内容重定向时,会重定向到http :// host/parent /?where = child – DMIL 2012-03-05 18:19:47

+0

@DMIL RewriteCond添加上面以禁止重写循环。 – 2012-03-05 18:24:25

+0

不适用于RewriteCond,不使用RewriteCond行,尽管绝对URL是一个大问题。此外,如果省略了小孩的尾部斜杠,则工作方式不同,然后显示来自父级的重定向。 **编辑:事实上,似乎RewriteCond行没有任何效果。 – DMIL 2012-03-05 18:28:53

0

您可以使用redirectMatch:

RedirectMatch 301 ^/child/?$ http://example.com/ 
+0

我会把这个放在哪里?在父目录.htaccess中?在父目录的重写规则之前或之后,究竟在哪里?此外,它不起作用。它重定向到的URL是http://主机名/父/子而不是http://主机名/父 – DMIL 2012-03-05 18:23:20

+0

它应该在当前目录中。它不应该在.htaccess文件中的位置。 – 2012-05-28 21:28:33

相关问题