使用.htaccess从网址中删除结尾

时间:2018-09-07 07:39:17

标签: .htaccess http-status-code-301

我想删除我们在网站上使用的某些URL的所有结尾。由于某些原因,即使被robot.txt阻止,许多URL也会被索引

今天刚刚检查了Google搜索控制台“已被robots.txt阻止,但已编入索引”-1200多个网址

它们都是相同的形式

https://www.ifootpath.com/display-ifootpath-walk?walkID=11470&username

它们应该是

https://www.ifootpath.com/display-ifootpath-walk?walkID=11470

每个URL的结束号都会改变(步行指南),所以我想我只想删除'&username'

谢谢

1 个答案:

答案 0 :(得分:0)

正如问题注释中已经提到的那样,您需要在此处执行两个步骤:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^walkID=(\d+)&
RewriteRule ^/?display-ifootpath-walk$ /display-ifootpath-walk/%1 [R=301]

RewriteRule ^/?display-ifootpath-walk/(\d+)$ /display-ifootpath-walk?walkID=$1 [END]

该规则集将在http服务器主机配置以及该主机的DOCUMENT_ROOT中的动态配置文件(“ .htaccess”样式文件)中同样起作用。

请注意,我没有测试这些行,只是按照我认为合适的方式写下了它们。但我希望我不会犯任何愚蠢的错字或逻辑错误...

如果使用这些规则收到http状态500(“内部服务器错误”),则很可能是您运行了非常旧版本的apache http服务器。在这种情况下,请尝试将[END]标志替换为[L]


还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。