.htaccess 使用htaccess将所有子页面重定向到主页

qnzebej0  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(186)

我想将所有子页面重定向到主页。我尝试使用代码:

RewriteEngine On
RewriteRule .+ http://www.example.com [r=301,nc,l]

所有的子页面都被重定向,除了那些包含问号的,例如,http://www.example.com/?123没有被重定向。如何修改我的代码来重定向那些URL?

x8goxv8g

x8goxv8g1#

您需要使用查询字符串重定向任何非空URL路径或主页(空URL路径)。您还应该在重定向过程中 * 删除 * 查询字符串(您的规则当前保留初始请求中的查询字符串)。
例如,请尝试以下方法:

# Redirect everything to the homepage (same domain)
RewriteCond %{REQUEST_URI} ^/. [OR]
RewriteCond %{QUERY_STRING} .
RewriteRule ^ http://www.example.com/ [QSD,R=301,L]

以上声明...对于URL路径至少包含一个字符(在初始斜杠之后)或包含查询字符串的所有URL路径,然后重定向到根。
QSD标志从请求中丢弃原始查询字符串。
规则上的NC标志是多余的,因为您无论如何都不会匹配特定的字母。

  • 题外话:* 然而,我会质疑这样做的动机。搜索引擎(谷歌)会看到大量的重定向到主页软404,所以这样做没有SEO的好处,它往往会让用户感到困惑,如果他们遵循一个以前存在的链接。一个有意义的404响应通常是首选在这种情况下。
    更新日期:

如果我想使用此代码也重定向到其他域我应该改变或添加什么重定向也主页?
假设另一个域也指向不同的服务器,那么您只需要删除上述规则中的两个 * 条件 *,以重定向 * 所有内容 * 并删除查询字符串。
例如:

# Redirect everything to the homepage on an external domain
RewriteRule ^ http://www.example.com/ [QSD,R=301,L]
camsedfj

camsedfj2#

试试这个,它在我的系统中工作。

RewriteRule ^(.*)$ http://www.example.com/ [L,R=301]

相关问题