我有一个网站和joomla,我需要重定向(301)一些链接
它们以这种形式存在(index.php?Itemid=标识它们-所有没有此部分的链接都不应该被重定向)
/index.php?Itemid=544&catid=331:savona&id=82356:smembramento-dei-cantieri-baglietto-di-varazze-lopposizione-delle-maestranze&option=com_content&view=article
这应该能行
RewriteRule ^index.php?Itemid(.*)$ http://www.ligurianotizie.it/archive/index.php?Itemid$1 [L,R=301]
但是第一个呢?(问号)似乎会引起问题。
事实上,如果我们假设链接是而没有,那么问号
/index.phpItemid=544&catid=331:savona&id=82356:smembramento-dei-cantieri-baglietto-di-varazze-lopposizione-delle-maestranze&option=com_content&view=article
我会用
RewriteRule ^index.phpItemid(.*)$ http://www.ligurianotizie.it/archive/index.php?Itemid$1 [L,R=301]
一切都很完美。但不幸的是,真正的链接有这个问号,我必须找到一个解决办法。
我跟那个问号有什么关系?
发布于 2012-05-27 02:14:52
?
字符转义了吗?尝试添加NE
(noescape)标志,如下所示:
RewriteRule ^index.php?Itemid(.*)$ http://www.ligurianotizie.it/archive/index.php?Itemid$1 [L,R=301,NE]
发布于 2012-05-27 02:25:41
问号后面的部分是查询字符串。您可以使用RewriteCond
来确定它是否为空,并基于此作出重定向的决定。
注释:查询字符串
该模式将不与查询字符串匹配。相反,您必须使用带有%{QUERY_STRING}变量的QUERY_STRING。但是,您可以在替换字符串中创建URL,其中包含查询字符串部分。只需在替换字符串中使用问号,以指示应将以下文本重新注入查询字符串。当您想要删除现有查询字符串时,请用问号结束替换字符串。若要将新查询字符串与旧查询字符串组合,请使用QSA标志。
发布于 2012-05-27 04:51:25
这应该对你有帮助:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} Itemid
RewriteRule ^index.php(.*)$ http://www.ligurianotizie.it/archive/index.php$1 [L,R=301]
每个包含"Itemid“的链接都会被重定向,其他的则不会。
https://stackoverflow.com/questions/10772835
复制相似问题