Apache 重写.htaccess文件的规则不起作用
我需要重定向用户,如下所示: “www.example.com/text1?a=1&b=2”至“www.example.com/text2?a=1&b=2&c=3” 为此,在.htaccess文件中,我使用以下mod rewrite规则:Apache 重写.htaccess文件的规则不起作用,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我需要重定向用户,如下所示: “www.example.com/text1?a=1&b=2”至“www.example.com/text2?a=1&b=2&c=3” 为此,在.htaccess文件中,我使用以下mod rewrite规则: RewriteEngine on RewriteRule /text1(.*) www.example.com/**text2?c=3 [R=301,L,QSA] 还尝试: RewriteEngine on RewriteRule /text
RewriteEngine on
RewriteRule /text1(.*) www.example.com/**text2?c=3 [R=301,L,QSA]
还尝试:
RewriteEngine on
RewriteRule /text1(.*) www.example.com/**text2$1&c=3
然而,上述情况对我来说并不适用,如果我试图访问“www.example.com/text1?a=1&b=2”,我会得到一个直接的404
有人能给点建议吗
非常感谢。请您尝试以下内容,这主要是一个内部重定向,因此我们不需要在这里设置
R=301
RewriteEngine ON
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^text1/?$ /text2?%{QUERY_STRING}&c=3 [NC,NE,L]
或者根据anubhava先生的评论,您可以尝试以下内容。我会在早上和他更多地讨论我的上述问题,因为现在已经是深夜了
RewriteEngine ON
RewriteRule ^text1/?$ /text2?c=3 [NC,QSA,L]
说明:
RewriteEngine ON
:将RewriteEngine设置为ON
以便允许在apache(.htaccess文件)中编写规则MOD rewrite规则
重写规则
:
- 左侧的
检查URI是否从^text1/?$
开始,并带有可选的text1
,然后转到此规则的右侧并重定向/
:在这里创建uri的新值,它从/text2?%{QUERY\u STRING}&c=3[NC,NE,L]
开始,然后text2
是默认变量,它具有已传递的查询字符串的值(在%{QUERY\u STRING}
)之后?
,因此它添加了旧uri的查询字符串,然后a=1&b=2
将新值添加到此URI。现在谈到标志&c=3
,NC,NE,L
表示这种情况下的最后一条规则,L
表示忽略URI(左侧)中应用的大小写,NC
表示不转换值(您在注释中得到NE
)%26
重写规则^text1/?$/text2?c=3[NC,QSA,L]
,否则/text1
将变为/text2&c=3
URI@anubhava,先生,谢谢您现在让我来。但是,先生,它没有来自传递的URL的查询字符串部分号(或者我应该在这里添加条件来检查查询字符串是否不为NULL)?这就是我采用这种方法的原因,我也对它进行了测试。通过查看OP的URL,它看起来不错,如果我遗漏了什么,请告诉我谢谢