页面重定向没有发生

时间:2011-08-21 15:30:25

标签: .htaccess mod-rewrite

我在index.html页面上动态创建了图片。我希望用户能够点击它们并重定向到pic_page.html。

index.html页面上的图片链接如下所示:

//<a href="http://mysite.com/index.html?bluepart=view&blueimage=29">//

.htaccess中的重定向代码如下所示:

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{IMAGE}  ^bluepart=view&blueimage=([0-9]+)$
RewriteRule ^/index.html$ /pic_page.html [R=301,L]
</IfModule>

重定向不起作用。当我向下滚动index.html并单击图像时,页面会跳回到index.html页面的顶部。

测试指向pic_page.html的链接,例如此工作正常:

//<a href="http://mysite.com/pic_page.html?bluepart=view&blueimage=23">test</a>//

知道为什么重定向不起作用,只是跳到index.html的顶部?

谢谢, 达雷尔

1 个答案:

答案 0 :(得分:0)

1。 问题:为什么不首先使用正确的链接?你可以轻松避免所有这些问题。

2。 回答您的问题: %{IMAGE}应该做什么?我不知道%{IMAGE}的含义 - 它绝对不是标准的mod_rewrite变量。

将其更改为 %{QUERY_STRING} ,然后规则将按预期运行:

RewriteCond %{QUERY_STRING} ^bluepart=view&blueimage=([0-9]+)$
RewriteRule ^index\.html$ /pic_page.html [R=301,L]

<强> P.S。 我不知道为什么你在这里使用重定向(301永久重定向)因此我可能是错的,但我会使用重写(内部重定向)而不是实际的重定向(301,外部重定向)。为此 - 将[R=301,L]替换为[L]

另外,因为这个规则(正如你所说的)放在.htaccess中,所以不需要在重写模式^/index.html$中引导斜杠 - 应该只是^index.html$(如果需要那个前导斜杠,如果规则放在Apache配置文件/虚拟主机上下文中。