我成功地将Wordpress网站大规模迁移到了Drupal。不幸的是,在Wordpress中,内容网址类似于www.example.org/?p=123。我的域名仍然相同,但我想通过htaccess
进行重定向,因为Drupal不会允许网址为www.example.org/?p=123。换句话说,内容与Wordpress中的内容不同。例如,新的Drupal URL类似于www.example.org/content/MyNewPage
我在我的.htaccess文件中尝试了这个并且它不起作用
Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage
所以我尝试了下面的内容,但它也不起作用。
Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage
正如测试一样,我尝试了下面的工作。
Redirect 301 http://www.example.org http://www.google.com
我确保我的重定向规则位于我的.htaccess列表的顶部,因此将首先对其进行评估。我该如何解决?
答案 0 :(得分:32)
Redirect和RedirectMatch都不允许您为重定向来源指定查询字符串。
[Source]
您必须使用mod-rewrite根据查询字符串重定向:
RewriteCond %{QUERY_STRING} ^p=375$
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L]
答案 1 :(得分:1)
您可以考虑在htaccess中使用ModRewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^p=345$ [NC]
RewriteRule index.php content/MyNewPage [NC,L,R=301]
</IfModule>
您还可能希望将旧页面ID传递给连接的新URL(或者可能是QS?):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING} ^p=(.*)$ [NC]
RewriteRule index.php content/MyNewPage-%1 [NC,L,R=301]
</IfModule>