2012-06-18 13 views
0

我有传统的URL像它具有索引2的任何URL重定向:尝试使用的.htaccess,不管发生什么后

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

,我想重定向有index2.php任何网址在它(无论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我不想要的。任何人都可以提供一些指导吗?

+0

哇谢谢lanzz ....你为什么不把这个评论加入到stackoverflow问的问题中,并阻止其他人能够回答? – bjohnb

+0

我不明白我的(显然已经主持了)评论是如何阻止任何人回答你的问题的。并非所有提出的问题都可以在你应该看到的每一个首要位置上清楚地回答,有些人实际上确实有问题,而其他人没有通过阅读手册来解答问题。我相信我的评论实际上为您提供了“一点指导”,完全按照您的要求提供,但显然您只是想要一个准备好的答案,您可以毫不费力地使用。 – lanzz

回答

1

1)重写规则图案只能mathc 路径URL的部分 - 查询串必须被默认情况下(经由的RewriteCond)

2)分别匹配,查询字符串被传递给新的URL,如果新的URL没有自己的查询字符串。解决方案 - 提供空的查询字符串(通过在URL的末尾添加?):

RewriteRule ^index2\.php$ /my-nice-url/and-more/? [L,R=301] 
+0

最后的问号是干什么的?谢谢!它的作品是一种享受! – bjohnb

+0

它正是我在#2中描述的 - 开始查询字符串部分。因为之后什么也没有 - 它意味着**空**查询字符串。 – LazyOne

+0

噢,天啊,对不起,我没有读到第2点。真是太棒了!谢谢! – bjohnb

0

这应该工作,即使它不是你想要什么:

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

rewriterule Apache docs

注:查询字符串

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

相关问题