0

我有旧版网址,例如:

mysite.com/index2.php?option=com_mtree&task=print&link_id=383&Itemid=168

并且我想将其中包含 index2.php 的任何 URL(无论 index2.php 之后的内容如何)重定向到mysite.com/my-nice-url

我试过了

RewriteRule ^index2(.+) /my-nice-url/and-more/ [l,r=301]

但这使/my-nice-url/and-more/?option=com_mtree&task=print&link_id=383&Itemid=168我不想要。有人可以提供一些指导吗?

4

2 回答 2

1

1) 重写规则模式只能计算URL 的路径部分——查询字符串必须单独匹配(通过 RewriteCond)

2) 默认情况下,如果新 URL 没有自己的查询字符串,则将查询字符串传递给新 URL。解决方案——提供空查询字符串(通过?在 URL 末尾添加):

RewriteRule ^index2\.php$ /my-nice-url/and-more/? [L,R=301]
于 2012-06-18T13:21:35.490 回答
0

这应该可以工作,即使它不完全是你想要的:

RewriteRule ^/index2(.+)$ /my-nice-url/and-more/?

重写 Apache 文档

注意:查询字符串

模式不会与查询字符串匹配。相反,您必须使用带有 %{QUERY_STRING} 变量的 RewriteCond。但是,您可以在包含查询字符串部分的替换字符串中创建 URL。只需在替换字符串中使用问号,即可指示应将以下文本重新注入到查询字符串中。当您想删除现有的查询字符串时,只用问号结束替换字符串。要将新查询字符串与旧查询字符串组合,请使用 [QSA] 标志。

于 2012-06-18T13:28:56.753 回答