我已经查看并搜索过,并且还没有找到这个问题的答案 - 我认为这应该很简单,但我不确定。
基本上,我很想学习如何使用.htaccss到410(Gone)我网站上包含问号的任何网址。
例如
这样的网址我希望有一个410
mysite.com/content/page.htm?no_redirect=true
但请保留原始网址 mysite.com/content/page.htm
当我在5月创建我的网站的移动版本时,编码问题会产生很多带有通配符/问号的页面,而且我想告诉google那些已经没有了.htaccess。
感谢您的帮助 - 这里有很棒的网站和资源!
答案 0 :(得分:0)
对于包含?
的所有网址,您实际上要求任何带有非空查询字符串的网址与Apache的%{QUERY_STRING}
变量匹配。您可以使用RewriteCond
将任何字符与.
匹配以表明它是非空的,然后使用RewriteRule
发送410代码。
您可能希望将其与an ErrorDocument
directive结合使用,以提供410代码附带的错误页面。
# Make sure an error page is defined for 410
ErrorDocument 410 /path/to/custom/410.html
# For any non-empty query string
RewriteCond %{QUERY_STRING} ^.
# Match any path and send a 410 response
# The [L] prevents further matches from being executed
RewriteRule ^ - [R=410,L]
要仅将410应用于包含no_redirect=true
参数的网址,您可以将其用作RewriteCond
中的表达式。由于%{QUERY_STRING}
包含整个查询字符串(?
除外),因此只需使用整个key=value
对。
RewriteCond %{QUERY_STRING} no_redirect=true [NC]
RewriteRule ^ - [R=410,L]
注意我还添加了[NC]
(无案例)以使其不区分大小写。