旧网站的网址如下: 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。
答案 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
,则浏览器不会被重定向(用户将继续看到旧网址),而是通过子请求提供内容。