.htaccess 重定向301仅对某些URL有效

.htaccess 重定向301仅对某些URL有效,.htaccess,redirect,joomla2.5,.htaccess,Redirect,Joomla2.5,由于某种原因,我突然无法让重定向301s正常工作。下面是.htaccess文件。我只粘贴了前10条重定向301命令,但有100多条 301重定向都具有相同的格式,但列出的前六个重定向无效。最后四个(后跟“***”)按预期运行。我看不出有什么解释 有什么想法吗 Options +FollowSymLinks ## Mod_rewrite in use. RewriteEngine On ## Begin - Rewrite rules to block out some common exp

由于某种原因,我突然无法让重定向301s正常工作。下面是.htaccess文件。我只粘贴了前10条重定向301命令,但有100多条

301重定向都具有相同的格式,但列出的前六个重定向无效。最后四个(后跟“***”)按预期运行。我看不出有什么解释

有什么想法吗

Options +FollowSymLinks

## Mod_rewrite in use.

RewriteEngine On

## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.

########## Begin - Custom redirects
RewriteCond %{HTTP_HOST} ^www\.caringcompanion\.net [NC]
RewriteRule (.*) http://caringcompanion.net/$1 [R=301,L,NC]

Redirect 301 /homecare/10-caring-companion/index.php?option=com_content&view=article&id=89&Itemid=75 http://www.caringcompanion.net/concord-ma

Redirect 301 /homecare/10-caring-companion/index.php?option=com_content&view=article&id=94&Itemid=75 http://caringcompanion.net/cambridge-ma

Redirect 301 /homecare/10-caring-companion/index.php?option=com_content&view=article&id=94&Itemid=74 http://caringcompanion.net/cambridge-ma

Redirect 301 /index.php?option=com_content&view=article&id=94:cambridge-ma-home-care-elderly-caregivers&catid=38:cambridge&Itemid=74 http://caringcompanion.net/cambridge-ma

Redirect 301 /index.php?option=com_content&view=article&id=93:acton-ma-home-care-elderly-caregivers&catid=34:acton&Itemid=70 http://caringcompanion.net/acton-ma

Redirect 301 /homecare/10-caring-companion/index.php?option=com_content&view=article&id=93&Itemid=70 http://caringcompanion.net/acton-ma

Redirect 301 /homecare-ma/ma/index.php?option=com_content&view=article&id=52&Itemid=158 http://caringcompanion.net/homecare-massachuetts-maine-new-hampshire

Redirect 301 /tag/71-biophilia http://caringcompanion.net/services/client-care-coordinators  ***********

Redirect 301 /ccc-copyright-notice/73-caring-companion/services/127-alzheimers-dementia-services http://caringcompanion.net/services/alzheimers-dementia   *********

Redirect 301 /index.php/component/content/article/73-caring-companion/services/127-alzheimers-dementia-services http://caringcompanion.net/services/alzheimers-dementia  ******

Redirect 301 /jblog/118-alzheimers-dementia http://caringcompanion.net/services/alzheimers-dementia   ***********************
Options+FollowSymLinks
##Mod_正在使用中重写。
重新启动发动机
##开始-重写规则以阻止一些常见的漏洞攻击。
#如果您的网站出现问题,请排除下面列出的操作
#这将试图阻止对Joomla的最常见类型的利用“尝试”!
#
#阻止任何试图在URL中对数据进行base64_编码的脚本。
RewriteCond%{QUERY\u STRING}base64\u encode[^(]*\([^)]*\)[或]
#阻止在URL中包含标记的任何脚本。
重写cond%{QUERY_STRING}(|%3E)[NC,或]
#阻止任何试图通过URL设置PHP全局变量的脚本。
重写条件%{QUERY\u STRING}全局(|\[|\%[0-9A-Z]{0,2})[或]
#阻止任何试图通过URL修改_请求变量的脚本。
重写条件%{QUERY\u STRING}\u请求(|\[|\%[0-9A-Z]{0,2})
#返回403禁止标题并显示根主页的内容
重写规则。*index.php[F]
#
##结束-重写规则以阻止一些常见的漏洞攻击。
##########开始-自定义重定向
重写cond%{HTTP_HOST}^www\.caringcompanion\.net[NC]
重写规则(.*)http://caringcompanion.net/$1[R=301,L,NC]
重定向301/homecare/10 caring companion/index.php?option=com\u content&view=article&id=89&Itemid=75http://www.caringcompanion.net/concord-ma
重定向301/homecare/10 caring companion/index.php?option=com\u content&view=article&id=94&Itemid=75http://caringcompanion.net/cambridge-ma
重定向301/homecare/10 caring companion/index.php?option=com\u content&view=article&id=94&Itemid=74http://caringcompanion.net/cambridge-ma
重定向301/index.php?option=com_content&view=article&id=94:cambridge ma家庭护理老年护理者&catid=38:cambridge&Itemid=74http://caringcompanion.net/cambridge-ma
重定向301/index.php?option=com_content&view=article&id=93:acton ma家庭护理老年护理者&catid=34:acton&Itemid=70http://caringcompanion.net/acton-ma
重定向301/homecare/10 caring companion/index.php?option=com\u content&view=article&id=93&Itemid=70http://caringcompanion.net/acton-ma
重定向301/homecare ma/ma/index.php?option=com\u content&view=article&id=52&Itemid=158http://caringcompanion.net/homecare-massachuetts-maine-new-hampshire
重定向301/tag/71嗜生物性http://caringcompanion.net/services/client-care-coordinators  ***********
重定向301/ccc版权声明/73关爱伴侣/服务/127阿尔茨海默痴呆症服务http://caringcompanion.net/services/alzheimers-dementia   *********
重定向301/index.php/component/content/article/73-caring-companion/services/127-alzheimers-detaminia-serviceshttp://caringcompanion.net/services/alzheimers-dementia  ******
重定向301/jblog/118阿尔茨海默痴呆症http://caringcompanion.net/services/alzheimers-dementia   ***********************

解释是,在
重定向
重定向匹配
语句的模式中,无法匹配查询字符串。该语句:

Redirect 301 /homecare/10-caring-companion/index.php?option=com_content&view=article&id=89&Itemid=75 http://www.caringcompanion.net/concord-ma
实际尝试与此URI匹配:

/homecare/10-caring-companion/index.php%3Foption=com_content%26view=article%26id=89%26Itemid=75
而不是查询字符串(在
之后的所有内容)。您需要使用mod_rewrite中的
%{query_string}
变量来匹配它。类似于这样:

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=89&Itemid=75$ 
RewriteRule ^/?homecare/10-caring-companion/index\.php$ http://caringcompanion.net/concord-ma [L,R=301]

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=94&Itemid=75$ [OR]
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=94&Itemid=74$
RewriteRule ^/?homecare/10-caring-companion/index\.php$ http://caringcompanion.net/cambridge-ma [L,R=301]

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=94:cambridge-ma-home-care-elderly-caregivers&catid=38:cambridge&Itemid=74$
RewriteRule ^/?index\.php$ http://caringcompanion.net/cambridge-ma [L,R=301]

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=93:acton-ma-home-care-elderly-caregivers&catid=34:acton&Itemid=70$
RewriteRule ^/?index\.php$ http://caringcompanion.net/action-ma [L,R=301]

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=93&Itemid=70$ 
RewriteRule ^/?homecare/10-caring-companion/index\.php$ http://caringcompanion.net/action-ma [L,R=301]

RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=52&Itemid=158$
RewriteRule ^/?homecare-ma/ma/index.php$ http://caringcompanion.net/homecare-massachuetts-maine-new-hampshire [L,R=301]

根据您拥有的其他
重定向
,您可能会发现您被重定向到未明确创建的意外URL。可能是重写规则(mod_rewrite)和重定向(mod_别名)因为这两个模块应用于URL文件映射引擎的不同点,所以会相互干扰,并且这两个模块最终可能会损坏相同的URI。如果发生这种情况,您应该坚持只使用mod_rewrite进行重定向,因为您需要重写引擎与查询字符串匹配。

Jon,非常感谢。在我的例子中,我想完全删除查询字符串,所以我必须在替换url的末尾添加“?”以获得我想要的结果,现在它就完美了。