1

我计划很快重新启动一个网站。重新启动的一部分是从 Joomla!到WordPress。

除了一些旧页面,它们会用一些精确的表达式重定向,我还有很多页面,它们将被重定向到新的根页面。

什么是正确的正则表达式,如果我想重定向这样的 URL:

http://www.somedomain.com/index.php?somevar=123&com_option=somevalue
http://www.somedomain.com/index.php?com_option=someothervalue

所有 URL 的共同点是:

http://www.somedomain.com/index.php?
+
com_option

如何使用 .htaccess 中的一行重定向代码重定向所有这些页面?

4

3 回答 3

1

我假设您不需要 somevar 并且只想结转 com_option

RewriteEngine on
RewriteBase /
RewriteRule index.php(.*)com_option=(.*)$ http://newsite.com/index.php?com_option=$2 [L,R=301]
于 2013-01-23T14:43:00.437 回答
0

您将需要执行以下操作:

RedirectMatch 301 (.*)/the/old/domain/and/url/(.*) http://the/new/domain/and/path/$2
于 2013-01-23T14:39:20.683 回答
0

现在,该网站已经上线,我发现我的问题的答案都没有得到解决。

经过一番尝试,我找到了一个解决方案:

到目前为止,谷歌提供了一个现场演示:


1) 去谷歌搜索“site:sqlxpert.de”。

2) 单击 URL 中具有“选项”的链接之一。

3) 您将被重定向到新页面根目录 - 在这种情况下,它是同一个域,也是一个 index.php,但 d*** QUERY_STRING 消失了。


我需要一个 .htaccess 片段,它执行以下操作(用文字表示):

If requested file is 
   INDEX.PHP or INDEX2.PHP 
AND 
   QUERY STRING contains "option"
then 301 REDIRECT to 
   http://www.sqlxpert.de/ 
WITHOUT any QUERY STRING

解决方案:

RewriteCond %{QUERY_STRING} option
RewriteRule ^index\.php http://www.sqlxpert.de/$1? [L,R=301]
RewriteRule ^index2\.php http://www.sqlxpert.de/$1? [L,R=301]
于 2013-02-07T16:42:59.657 回答