2014-02-17 71 views
1

旧网站的网址是这样的: example.com/dsk/newslong.php?id=5206重写旧网站的网址到新网站的网址

新网站的网址是这样的: example.com/dsk/? p = 5206

下面的.htaccess不能以任何方式工作。 多,我有5K的帖子,来图,并希望有它的工作就像一个宏:

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

(每之后http://www.example.com/dsk/newslong.php?id=XXX应rewrited到/ DSK/P = XXX是多少?)一旦安装了newsite,服务器正在返回在newslong.php上找不到的404。

回答

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重定向到新位置的URL,那么它的简单得多:

RewriteEngine on 

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

如果省略了R,那么浏览器将不会被重定向(用户会一直看到旧的URL),取而代之的是内容将通过子请求提供服务。

+0

@anubhava取决于...如果他只想在查询字符串中用'?id = num'重写文章,而不是过度杀伤... – poncha

+0

我会添加一个关于将整个uri重写为新的注释,尽管 – poncha

+0

抱歉编辑您的答案,但我认为比在代码中编写代码更容易解​​释。 – anubhava

相关问题