如何将带有查询字符串的页面重定向到主页?

时间:2016-10-22 01:16:48

标签: .htaccess redirect

最近我重新设计了我的网站,让我们说http://www.sitename.com/

在重新设计之前,主页网址是这样的:http://www.sitename.com/default.asp?id=1&lg=1

旧页面也有奇怪的查询字符串,它们不再相关,因此,我想将以default.asp开头的所有内容重定向到主页。

if(quantity >= 10 && quantity <=19)

替代地

RewriteRule default\.asp.* \

这是我到目前为止最接近的,但我很确定它错了。 你能帮忙吗?

更新:这是我的整个.htaccess:

RewriteCond %{QUERY_STRING} ^default.asp?id=1&lg=1$ [NC]
RewriteRule http://www.sitename.com/ http://www.sitename.com/? [R=301,L]

我试过把我的规则放在顶部和底部,(没有运气)。我应该以某种方式将其嵌入到另一条规则中吗?

3 个答案:

答案 0 :(得分:1)

基于this网站,如果您设置这样的规则

RewriteRule default\.asp.* /? 

它应该有用。

以下是如何在重写中替换查询字符串的参考:

http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule

  

修改查询字符串

     

默认情况下,查询字符串不会更改。您可以,   但是,在包含查询的替换字符串中创建URL   字符串部分。只需在替换字符串中使用问号   表示应将以下文本重新注入   请求参数。 如果要删除现有查询字符串,请结束   替换字符串只有一个问号。结合新旧   查询字符串,使用[QSA]标志。

<强>更新

根据您的评论,试试这个:

# BEGIN WordPress 

RewriteEngine On 
RewriteBase / 
RewriteRule default\.asp.*$ /? [L]

RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 

# END WordPress

请注意[L]末尾的RewriteRule default\.asp.*$ /? [L],它会在找到匹配项后终止重写过程。见L flag

如果您不包含L标志,则该过程将继续执行.htaccess中的其余规则,直到它到达最后没有匹配或直到它与L标志匹配为止。可以把它想象成switch语句,在每种情况下都需要break,否则它会继续下一个案例,如果它对你有帮助的话。

答案 1 :(得分:1)

您可以使用以下规则:

# BEGIN WordPress 
<IfModule mod_rewrite.c>

RewriteEngine On 
RewriteBase / 

# redirect /default.asp to landing page
RewriteRule default\.asp$ /? [L,NC,R=301]

RewriteRule ^index\.php$ - [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 

</IfModule>    
# END WordPress

答案 2 :(得分:0)

default.asp 是您需要使用%{REQUEST_URI}变量与其匹配的文件名。它不是查询字符串的一部分。要重定向包含 default.asp 的请求URI,您可以使用以下内容:

RewriteCond %{REQUEST_URI} /default\.asp [NC]
RewriteRule ^ http://sitename.com/? [R,L]