2

原始 URL 1 - www.mysite.com/gallery-category.php?gallname=garments&GalleryID=10
SEF URL 1 - http://www.mysite.com/photos-garments~10.html

原始 URL 2 - www.mysite.com/gallery-category.php?gallname=furniture&GalleryID=20
SEF URL 2 - http://www.mysite.com/photos-furniture~20.html

原始 URL 3 - www.mysite.com/gallery-category.php?gallname=plastics&GalleryID=30
SEF URL 3 - http://www.mysite.com/photos-plastics~30.html

为了得到这个 SEF URL,我在 .htaccess 中写了 RewriteRule 为

RewriteRule ^photos-(.+)~(.+).html gallery-catagory.php?gallname=$1&GalleryID=$2&%{QUERY_STRING} [nc]

但现在我只想重定向一个特定的 URL 以重定向到另一个页面。

即只有http://www.mysite.com/photos-plastics~30.html被重定向到http://www.mysite.com/plasticphotos.html其他 2 个原始 URL 是同一页面

我在重定向 URL 下尝试过,它正在工作,但它使用浏览器中的查询字符串重定向 - http://www.mysite.com/plasticphotos.html?gallname=plastics&GalleryID=30

重定向网址

Redirect /photos-plastics~30.html http://www.mysite.com/plasticphotos.html

输出 URL 假设为 - http://www.mysite.com/plasticphotos.html

请帮我解决这个问题。

谢谢。

4

2 回答 2

0

重定向会自动附加查询字符串。如果你不想要查询字符串,试试这个 RewriteRule:

RewriteRule photos-plastics~30.html http://www.mysite.com/plasticphotos.html ? [大]

于 2012-12-19T20:50:25.637 回答
0

这似乎正在发生,因为您有一个 mod_rewrite 规则重写^photos-(.+)~(.+).htmlgallery-catagory.php?gallname=$1&GalleryID=$2 ,并且您有一个 mod_alias 指令重定向photos-plastics~30.html/plasticphotos.html. 这不是查询字符串问题,因为查询字符串*被您的 mod_rewrite 规则附加*。这是因为 mod_rewrite 和 mod_alias 指令在 URL 文件映射处理管道的不同部分应用于相同的 URI。这意味着重写规则正在破坏 URI,并且重定向指示将其标记为重定向,因此您最终会得到一个带有两个指令的 frankenstein URI。

每当您混合使用 mod_rewrite 和 mod_alias 时,您必须确保它们不会相互干扰。这两个模块都应用于处理管道的不同点。为确保它们不会互相搞砸,请坚持使用 mod_rewrite,因为您已经在使用它进行内部重写。将此规则添加到您当前的规则之上

RewriteRule ^photos-plastics~30.html$ /plasticphotos.html [L,R=301]
于 2012-12-19T21:46:48.400 回答