我想将所有子页面重定向到主页。我尝试使用代码:
RewriteEngine On RewriteRule .+ http://www.example.com [r=301,nc,l]
所有的子页面都被重定向,除了那些包含问号的,例如,http://www.example.com/?123没有被重定向。如何修改我的代码来重定向那些URL?
http://www.example.com/?123
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标志是多余的,因为您无论如何都不会匹配特定的字母。
QSD
NC
如果我想使用此代码也重定向到其他域我应该改变或添加什么重定向也主页?假设另一个域也指向不同的服务器,那么您只需要删除上述规则中的两个 * 条件 *,以重定向 * 所有内容 * 并删除查询字符串。例如:
# Redirect everything to the homepage on an external domain RewriteRule ^ http://www.example.com/ [QSD,R=301,L]
camsedfj2#
试试这个,它在我的系统中工作。
RewriteRule ^(.*)$ http://www.example.com/ [L,R=301]
2条答案
按热度按时间x8goxv8g1#
您需要使用查询字符串重定向任何非空URL路径或主页(空URL路径)。您还应该在重定向过程中 * 删除 * 查询字符串(您的规则当前保留初始请求中的查询字符串)。
例如,请尝试以下方法:
以上声明...对于URL路径至少包含一个字符(在初始斜杠之后)或包含查询字符串的所有URL路径,然后重定向到根。
QSD
标志从请求中丢弃原始查询字符串。规则上的
NC
标志是多余的,因为您无论如何都不会匹配特定的字母。更新日期:
如果我想使用此代码也重定向到其他域我应该改变或添加什么重定向也主页?
假设另一个域也指向不同的服务器,那么您只需要删除上述规则中的两个 * 条件 *,以重定向 * 所有内容 * 并删除查询字符串。
例如:
camsedfj2#
试试这个,它在我的系统中工作。