htaccess重定向被“忽略”

时间:2013-03-04 19:21:54

标签: .htaccess

已经查看了有关此内容的所有其他帖子,但似乎无法让它发挥作用。为什么我无法更改Joomla配置,项目等,有许多不相关的原因,但无论如何,似乎这些都应该可以正常工作。

简而言之,我希望 Itemid = 30 任何链接重定向到给定的链接。我究竟做错了什么?前三个是我尝试过的,最后一行是有效的。

RedirectMatch 301 ^Itemid=30$ http://inside.beta.oursite.com/index.php?option=com_cware&view=courses&Itemid=125

redirect 301 index.php?option=com_cware&view=courses&Itemid=30 http://inside.beta.oursite.com/index.php?option=com_cware&view=courses&Itemid=125

RewriteEngine On
RewriteCond %{QUERY_STRING} Itemid=30
RewriteRule ^Itemid=30/$ index.php?option=com_content&view=article&id=106&Itemid=121 [R=301]


# If query string contains "username=admin"
RewriteCond %{QUERY_STRING} username=admin
# Block it without mercy
RewriteRule .* - [F]

1 个答案:

答案 0 :(得分:1)

Redirect仅考虑URL路径,这会排除查询字符串。如果您想将查询字符串考虑在内,则必须使用mod_rewrite

同样适用于RewriteRule

  

如果您希望与主机名,端口或查询字符串匹配,请分别使用带有%{HTTP_HOST},%{SERVER_PORT}或%{QUERY_STRING}变量的RewriteCond。

因此,如果您想匹配某些查询字符串并将所有网址重定向到其他网址,请将RewriteCond与RewriteRule结合使用

RewriteEngine On
RewriteCond %{QUERY_STRING} Itemid=30
RewriteRule .* index.php?option=com_content&view=article&id=106&Itemid=121 [R=301]

这会将包含.*的查询字符串的任何网址Itemid=30重定向到index.php?option=com_content&...