重定向我的服务器中不存在的任何URL

时间:2013-09-16 09:06:34

标签: php apache .htaccess redirect mod-rewrite

我在我的客户端以前的域名中进行了DNS更改,所以现在所有像ABCDEF.com这样的网址现已翻译成UVWXYZ.com,但我的客户希望保留每个链接到他的页面,我就是通过htaccess和mod_rewrite做一套好的301重定向。所以现在我的.htaccess看起来像这样:

RewriteEngine On
RewriteBase /
RewriteRule ^list.aspx?i=5$ list.php [R=301,L]
RewriteRule ^cat.aspx?i=1$ printers.php [R=301,L]
RewriteRule ^cat.aspx?i=3$ multi.php [R=301,L]

在这一刻,当我进入ABCDEF.com/list.aspx时,我的浏览器加载了UVWXYZ.com/list.php(以及其他示例),但我的客户想要将任何其他页面重定向到主页。换句话说,当我输入ABCDEF.com/downloads.aspx时,我的浏览器必须加载UVWXYZ.com。

我尝试过像

这样的规则
RewriteRule (.*) index.php [R=301,L]

但是服务器会喊出一个重定向循环。哪条规则最适合我的情况?

非常感谢您提前

1 个答案:

答案 0 :(得分:3)

您可以尝试以下方法之一:

FallbackResource /index.php

或者:

ErrorDocument 404 /index.php

或者仅使用mod_rewrite(在htaccess文件的最后):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^ /index.php [L,R=301]