重写旧网站的网址到新网站的网址

时间:2014-02-17 18:57:55

标签: .htaccess mod-rewrite

旧网站的网址如下: example.com/dsk/newslong.php?id=5206

新网站的网址如下: example.com/dsk/?p=5206

下面的.htaccess无论如何都无法正常工作。 而且,我有5K的帖子要映射,并希望它像宏一样工作:

http://www.example.com/dsk/newslong.php?id=XXX之后的每个数字都应该重新输入/ dsk /?p = XXX)

    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^/dsk/newslong.php?id=5206(.*)$ http://www.example.biz/dsk/?p=5206$1 [r=301,nc]

安装newsite的服务器返回了在newslong.php上找不到的404。

1 个答案:

答案 0 :(得分:2)

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/dsk/newslong.php$
RewriteCond %{QUERY_STRING} ^(id=[0-9]+)$
RewriteRule .* /dsk/?%1 [L,QSA]

RewriteRule仅匹配URI,您无法在那里尝试匹配查询字符串。 但是你可以在RewriteCond条件......

中匹配它

话虽如此,如果您不关心查询字符串内容,但希望所有指向newslong.php的网址重定向到新位置,那么它就更简单了:

RewriteEngine on

RewriteCond %{QUERY_STRING} ^id=[0-9]+$
RewriteRule ^dsk/newslong\.php$ /dsk/ [L,R]

如果省略R,则浏览器不会被重定向(用户将继续看到旧网址),而是通过子请求提供内容。