如何使用htaccess重定向动态页面

时间:2012-08-10 23:19:18

标签: apache .htaccess mod-rewrite redirect url-rewriting

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

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

1 个答案:

答案 0 :(得分:1)

阿德南,

您需要将以下行添加到DOCROOT/.htaccess。这假设您的.htaccess子目录中没有任何ba文件。 (有关原因的解释,请参阅Tips for debugging .htaccess rewrite。)

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 参数从上次成功的条件匹配中选取匹配变量。