我在重定向某些页面时遇到问题。我的重写规则如下所示(示例):
RewriteRule /index.php?option=com_content&view=article&id=47:article-keyword&catid=8:position$ article-keyword.html [R=301,L]
但它不起作用,我尝试了一些不同的组合,但它仍然什么也没做。有什么解决办法吗?
我在重定向某些页面时遇到问题。我的重写规则如下所示(示例):
RewriteRule /index.php?option=com_content&view=article&id=47:article-keyword&catid=8:position$ article-keyword.html [R=301,L]
但它不起作用,我尝试了一些不同的组合,但它仍然什么也没做。有什么解决办法吗?
更新:下面的 RewriteRule 不正确。有关详细信息,请参阅 2012 年 7 月 9 日的更新
我读过 RewriteRules 总是相对的,因此尝试:
RewriteRule ^index\.php\?option=com_content&view=article&id=47:article-keyword&catid=8:position$ article-keyword.html [R=301,L]`
这应该重定向/index.php?option=com_content&view=article&id=47:article-keyword&catid=8:position
到article-keyword.html
指定字符串的^
开头。有关 Apache 的 RewriteRule 的更多信息,请查看http://www.noupe.com/php/10-mod_rewrite-rules-you-should-know.html。
更新 - 2012-07-08
好的,在阅读 Apache 文档后,查询字符串上的 RewriteRule 不匹配。要匹配查询字符串中的数据,您需要使用 aRewriteCond
和%QUERY_STRING
变量。
成功!以下对我有用!
RewriteCond %{QUERY_STRING} option=com_content&view=article&id=47:article-keyword&catid=8:position
RewriteRule ^index\.php$ article-keyword.html? [R=301,L]
这重定向http://site.domain.com/index.php?option=com_content&view=article&id=47:article-keyword&catid=8:position
到http://site.domain.com/article-keyword.html
这只会将请求重定向到具有相关查询字符串的 index.php。