-1

我已将站点从一个框架移动到另一个框架,现在我想重定向重要页面(大约 20 个)。如何使用 apache rewrite 重定向它们?以下是示例:

Old: http://mydomain.com/ba/stream.php?kat=15
New: http://www.mydomain.com/bs/about-us/our-partners

Old: http://mydomain.com/ba/stream.php?kat=29
New: http://www.mydomain.com/bs/catalogues/it-catalogue

此外,在列出重要页面后,我想重定向所有剩余的链接形式:

http://mydomain.com/ba/whatever-is-here

http://www.mydomain.com/bs/

按照 TerryE 的建议,我将附上我最新的无效代码:)

RewriteCond %{QUERY_STRING} ^kat=15$
RewriteRule ^stream\.php$ http://www.mydomain.com/bs/about-us/our-partners [R=301,L]

另一个注意事项:我使用此代码将根域重定向到 www 子域:

RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

我已将此根放在 www 代码下方,用于特定页面重定向,当我http://mydomain.com/ba/stream.php?kat=15在浏览器中测试时,我被重定向到http://www.mydomain.com/bs/ba/stream.php?kat=15

4

1 回答 1

1

阿德南,

您需要将以下行添加到您的DOCROOT/.htaccess. 这假设您的子目录中没有任何.htaccess文件。ba(有关原因的说明, 请参阅调试 .htaccess 重写的提示。)

RewriteEngine On
RewriteBase   /
#
# Redirect kat 15 to the Partners page 
#
RewriteCond %{QUERY_STRING}   ^kat=15$
RewriteRule ^ba/stream\.php$  http://www.mydomain.com/bs/about-us/our-partners? [R=301,L]
#
# Redirect all other kat ids to the corresponding bs page 
#
RewriteCond %{QUERY_STRING}   ^kat=(\d+)$
RewriteRule ^ba/stream\.php$  http://www.mydomain.com/bs/%1? [R=301,L]

笔记:

  • 规则匹配 UPI 减去前导路径(在本例中为 /)
  • 你需要有尾随吗?在替换字符串上以抑制现有的查询参数。
  • %n参数从最后一次成功的条件匹配中获取匹配变量。
于 2012-08-11T12:56:39.257 回答