.htaccess 如何使用htaccess重定向URL通配符

.htaccess 如何使用htaccess重定向URL通配符,.htaccess,.htaccess,我的网站不久前遭到黑客攻击,许多URL都是以以下格式创建的: http://example.com/prematurely.asp?skin=pspfsffdproblems=nq.... 是否可以基于prematurely.asp将所有这些通配符URL重新定向到单个页面?例如: http://example.com/newpage .htaccess文件如下所示: Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOS

我的网站不久前遭到黑客攻击,许多URL都是以以下格式创建的:

http://example.com/prematurely.asp?skin=pspfsffdproblems=nq....
是否可以基于prematurely.asp将所有这些通配符URL重新定向到单个页面?例如:

http://example.com/newpage
.htaccess文件如下所示:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^nowcosmetic\.co.uk$ [NC]
RewriteRule ^(.*)$ http://nowcosmetic.co.uk/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/questions-and-answers\.html$
RewriteRule .* http://nowcosmetic.co.uk/botox.html [R=301,L]
RewriteRule ^prematurely\.asp /botox? [R=301,L]'

您可以通过添加重写规则来实现这一点

RewriteEngine on
RewriteRule ^prematurely/(.*)   /newpage [R=301,L]

您可以通过添加重写规则来实现这一点

RewriteEngine on
RewriteRule ^prematurely/(.*)   /newpage [R=301,L]

正如在评论中提到的,如果这些URL是一个已被破解的网站的结果,那么你最好(SEO方面)使用404(或410)而不是重定向

但是,如果您仍要重定向

基于过早地将所有这些通配符URL重新定向到单个页面

在.htaccess文件的顶部(在文档根目录中):

请注意,
RewriteEngine On
应该只在文件中出现一次(在顶部)


这只是与“prematurely.asp”匹配(根据您的请求忽略查询字符串)。
重写规则的后续
替换将从重写的URL中删除原始查询字符串。

如评论中所述,如果这些URL是已解决的黑客网站的结果,那么您最好(从搜索引擎优化角度)使用404(或410)而不是重定向

但是,如果您仍要重定向

基于过早地将所有这些通配符URL重新定向到单个页面

在.htaccess文件的顶部(在文档根目录中):

请注意,
RewriteEngine On
应该只在文件中出现一次(在顶部)


这只是与“prematurely.asp”匹配(根据您的请求忽略查询字符串)。
重写规则
替换上的尾部
会从重写的URL中删除原始查询字符串。

如果这些URL是黑客攻击的结果(现在已被清除),并且现在不再存在,那么最好让这些URL以404(或410)失败,而不是重定向。重定向将向搜索引擎发送错误的消息。我认为这将解决您在RewriteCond%{the_REQUEST}/prematurely\.asp\?skin=([^=]+)=([^\s]+)[NC]RewriteRule^上的问题http://example.com/newpage? [NE、NC、R、L]
如果这些URL是黑客攻击的结果(现在已被清除),并且现在不再存在,那么您最好使用404(或410)让这些URL失败,而不是重定向。重定向将向搜索引擎发送错误的消息。我认为这将解决您在RewriteCond%{the_REQUEST}/prematurely\.asp\?skin=([^=]+)=([^\s]+)[NC]RewriteRule^上的问题http://example.com/newpage? [NE,NC,R,L]在
重写规则
模式末尾的
(.*)
是多余的,但是OP希望匹配“prematurely.asp”,而不是“prematurely/”。这也会将查询字符串传递到目标URL上,这可能是不需要的-您需要在
重写规则
替换的末尾添加一个尾随的
,以忽略此项。尝试了Ron的建议,但仍然转到404。
重写规则
模式末尾的
(.*)
是多余的,但OP也希望匹配“prematurely.asp”,而不是“prematurely/”。这也会将查询字符串传递到目标URL上,这可能是不需要的-您需要在
重写规则
替换的末尾添加一个尾随的
,以忽略此项。尝试了Ron的建议,但仍然转到404。你好还是没有快乐。我在这里添加了我的htaccess:Options+FollowSymLinks-RewriteEngine-On-RewriteCond%{HTTP_-HOST}^nowcosmetic\.co.uk$[NC]RewriteRule^(.*)$[R=301,L]RewriteCond%{REQUEST_URI}^/问答\.html$RewriteRule.[R=301,L]RewriteRule^过早\.asp/botox?[R=301,L]您可以编辑您的问题并在那里添加代码吗?这样会更容易阅读并保留其格式。谢谢。我已经用htaccess代码更新了原始问题。您在最后一句话的末尾有一个错误的
——但我想这只是问题中的一个输入错误吧?这里似乎发生了“其他事情”——因为行为与.htaccess文件中的指令不一致。如果您过早地导航到
/asp
,则会被重定向到
/肉毒杆菌
,但是,
/过早地。asp某些东西在应该重定向时(根据上述指令)不会被重定向。现在,如果您导航到
/botox.html
,那么它将重定向到
/botox
-它在哪里执行此操作?这不是由.htaccess控制的?理想情况下,上面的指令应该紧跟在
RewriteEngine On
指令之后,但是,在这种情况下,它似乎没有太大关系,因为其他指令似乎没有冲突。Hi。还是没有快乐。我在这里添加了我的htaccess:Options+FollowSymLinks-RewriteEngine-On-RewriteCond%{HTTP_-HOST}^nowcosmetic\.co.uk$[NC]RewriteRule^(.*)$[R=301,L]RewriteCond%{REQUEST_URI}^/问答\.html$RewriteRule.[R=301,L]RewriteRule^过早\.asp/botox?[R=301,L]您可以编辑您的问题并在那里添加代码吗?这样会更容易阅读并保留其格式。谢谢。我已经用htaccess代码更新了原始问题。您在最后一句话的末尾有一个错误的
——但我想这只是问题中的一个输入错误吧?这里似乎发生了“其他事情”——因为行为与.htaccess文件中的指令不一致。如果您过早地导航到
/asp
,则会被重定向到
/肉毒杆菌
,但是,
/过早地。asp某些东西在应该重定向时(根据上述指令)不会被重定向。现在,如果您导航到
/botox.html
,那么它将重定向到
/botox
-它在哪里执行此操作