.htaccess重定向条件在Apache 2.2上不起作用
我有以下格式的一些URL:.htaccess重定向条件在Apache 2.2上不起作用,apache,.htaccess,redirect,Apache,.htaccess,Redirect,我有以下格式的一些URL: www.website.co.uk/form.aspx?type=brochure www.website.co.uk/form.aspx?type=contact www.website.co.uk/form.aspx?type=quote 我需要根据“type”参数将每个页面重定向到不同的页面 我对重写的理解是,您将使用一个重写条件来获取这个参数,然后是一个重定向规则,例如 RewriteCond %{QUERY_STRING} ^type=contact [N
www.website.co.uk/form.aspx?type=brochure
www.website.co.uk/form.aspx?type=contact
www.website.co.uk/form.aspx?type=quote
我需要根据“type”参数将每个页面重定向到不同的页面
我对重写的理解是,您将使用一个重写条件来获取这个参数,然后是一个重定向规则,例如
RewriteCond %{QUERY_STRING} ^type=contact [NC]
Redirect 301 /form.aspx /customer-support/contact-us?
RewriteCond %{QUERY_STRING} ^type=quote [NC]
Redirect 301 /form.aspx /ask-an-expert?
这在我使用的重定向测试仪()上有效,但在实际站点上无效
我认为这可能与我正在运行的Apache版本(2.2)有关——这是Magento 2的要求,无法升级
这可能吗?非常感谢您提供的任何提示。我认为您混淆了Apache软件包,
RewriteCond
是mod\u rewrite
的一部分,而Redirect
是mod\u alias
-您应该将RewriteCond
与RewriteRule
一起使用,就像这样:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/form.aspx [NC]
RewriteCond %{QUERY_STRING} ^type=contact [NC]
RewriteRule .* /customer-support/contact-us? [R=301,L]
RewriteCond %{REQUEST_URI} ^/form.aspx [NC]
RewriteCond %{QUERY_STRING} ^type=quote [NC]
RewriteRule .* /ask-an-expert? [R=301,L]
但是由于这是Magento 2,如果要将这些规则添加到根
.htaccess
文件中,则必须在Magento的核心路由器(vanilla.htaccess中的第172行)之前添加这些规则:
############################################
## add your custom rewrites before line 172
## which is the start of Magento's core router
RewriteCond %{REQUEST_URI} ^/form.aspx [NC]
RewriteCond %{QUERY_STRING} ^type=contact [NC]
RewriteRule .* /customer-support/contact-us? [R,L]
RewriteCond %{REQUEST_URI} ^/form.aspx [NC]
RewriteCond %{QUERY_STRING} ^type=quote [NC]
RewriteRule .* /ask-an-expert? [R,L]
############################################ < this would have been line 172
## never rewrite for existing files, directories and links
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
############################################
##在第172行之前添加自定义重写
##这是Magento核心路由器的起点
RewriteCond%{REQUEST_URI}^/form.aspx[NC]
RewriteCond%{QUERY\u STRING}^type=联系人[NC]
是否重写规则/客户支持/联系我们?[R,L]
RewriteCond%{REQUEST_URI}^/form.aspx[NC]
RewriteCond%{QUERY_STRING}^type=quote[NC]
重写规则/询问专家?[R,L]
############################################<这应该是第172行
##决不重写现有文件、目录和链接
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-L
(这适用于我的本地Magento 2 dev安装)在vhost中,您是否允许您的
.htaccess
文件设置mod_rewrite
设置?您应该在vhost的
部分中有AllowOverride FileInfo
或AllowOverride All
。您不希望重定向301
,但需要重写规则
在那里:重定向301代码>谢谢你回复我-这非常有帮助。问题是,我们不支持“QSD”标志,这在这里似乎是必要的——这会让网站崩溃。有什么解决办法吗?你是对的,是的,对不起-QSD
是Apache 2.4+吗?你可以使用?
技巧。。。我正在检查您是否可以在RewriteCond
上使用[NC]
,而不是RewriteRule
。我想现在已经整理好了标志。。。最初从重写规则中错过了R=301
(您可以使用302进行临时重定向)。谢谢,但似乎不支持“和”标志,因为这也会导致站点关闭。删除它会导致重定向不触发。Dowp-我的坏[和]
不存在-它是隐式的。。。我显然是尼古丁缺乏症或是什么:|
RewriteCond %{QUERY_STRING} ^type=contact [NC]
RewriteRule ^form.aspx /customer-support/contact-us? [R]
RewriteCond %{QUERY_STRING} ^type=quote [NC]
RewriteRule ^form.aspx /ask-an-expert? [R]