我正在尝试在我的.htaccess中使用重写规则将用户从旧链接带到临时新链接(它不是永久性新网站,所以我不想要301重定向)
以下适用于所有html页面以及没有参数的php页面,但它不处理最后一个示例 - 带参数的php页面。请注意,新域上的目录结构不同,但url的参数完全相同。我可以使用正则表达式来执行重写吗?我没有太多编写自己的reg表达式的经验,所以我不知道从哪里开始。谢谢!
我的.htaccess文件:
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php
Options -MultiViews
Options +FollowSymlinks
RewriteEngine on
RewriteRule invest/index.html http://example.org/new_file_structure/invest/index.html
RewriteRule index-old.html http://example.org/index.php
RewriteRule invest/i2/ap/row_I2_i_ap1.php http://example.org/new_file_structure/i2/ap/row_I2_i_ap1.php
##The following doesn't work:
RewriteRule subpages/view.php?d=i1_014 http://example.org/2010/view.php?d=i1_014
谢谢, 仁
答案 0 :(得分:5)
您需要使用RewriteCond
来检测查询字符串:
RewriteCond %{QUERY_STRING} d=(.+)
然后你需要以%n
的形式使用RewriteCond反向引用:
RewriteRule subpages/view.php$ http://example.org/2010/view.php?d=%1
答案 1 :(得分:1)
任何GET参数都存储在
中%{QUERY_STRING}
您应该可以将其添加到重定向网址。
RewriteRule subpages/view.php?d=i1_014 http://example.org/2010/view.php?d=i1_014&%{QUERY_STRING}
但如果您不想要301,为什么要指出完整的URL?我认为你强制执行 301的方式。为什么不使用/2010/view.php....
?