3

我有以下问题。下面的链接格式不再存在:

photos.domain.com/web/poppic.php?n=[any number from 0 to the roof]
Ej,:photos.domain.com/web/poppic.php?n=30

一年前,我将其替换为:photos.domain.com/

多年后,我仍然有大量的 404 错误。我需要一个永久重定向和一个 htaccess 指令,以便搜索引擎不跟随并且不再索引那个旧链接。

我试过rewriterule ^web\/poppic\.php?n=30 "http\:\/\/photos\.domain\.com" [R=301,L]会奏效。但是,我需要写每一行,从 0 到 9999999999999999999999999: rewriterule ^web\/poppic\.php?n=0 "http\:\/\/photos\.domain\.com" [R=301,L] rewriterule ^web\/poppic\.php?n=1 "http\:\/\/photos\.domain\.com" [R=301,L] rewriterule ^web\/poppic\.php?n=2 "http\:\/\/photos\.domain\.com" [R=301,L] 等等。

我怎样才能用一个变量来代替php?n=[number]php?n=$variable或类似的东西)?

此外,它并没有告诉爬虫不要关注/索引页面。

能否请你帮忙?

4

1 回答 1

3

您无法使用 apache 的 mod_rewrite 匹配重写规则内的查询字符串。您需要使用重写条件并匹配%{QUERY_STRING}变量:

RewriteCond %{QUERY_STRING} ^n=[0-9]+
RewriteRule ^web/poppic\.php$ /? [L,R=301]

不确定您的原始规则如何:

rewriterule ^web\/poppic\.php?n=30 "http\:\/\/photos\.domain\.com" [R=301,L]

曾经工作过。在 apache 2.2 或 2.4 下它对我不起作用。

于 2012-12-08T05:30:21.687 回答