使用.htaccess从URL中删除结尾

问题描述 投票:0回答:1

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

今天刚刚检查了谷歌搜索控制台“索引,虽然被robots.txt阻止” - 1,200多个网址

它们都是相同的形式

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

他们应该是

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

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

谢谢

.htaccess http-status-code-301
1个回答
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服务器主机配置(读取:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)。

© www.soinside.com 2019 - 2024. All rights reserved.