.htaccess 301重定向后,您能否继续匹配htaccess模式?

.htaccess 301重定向后,您能否继续匹配htaccess模式?,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,My public_html中的My.htaccess文件具有: RewriteEngine on RewriteRule ^testfolder/(.*)$ /$1 [R=301,L,NC] RewriteRule ^(.*)$ testfolder/$1 根据它,我正在使用它来测试输出 当我进入时,我得到: 有没有办法执行301重定向以使浏览器栏中的url更漂亮 在继续尝试进一步匹配htacess文件中的模式时 我在www.mydomain.com/testfolder中有我的codeig

My public_html中的My.htaccess文件具有:

RewriteEngine on
RewriteRule ^testfolder/(.*)$ /$1 [R=301,L,NC]
RewriteRule ^(.*)$ testfolder/$1
根据它,我正在使用它来测试输出

当我进入时,我得到:

有没有办法执行301重定向以使浏览器栏中的url更漂亮 在继续尝试进一步匹配htacess文件中的模式时

我在www.mydomain.com/testfolder中有我的codeigniter项目。我的第一条规则:

RewriteRule ^testfolder/(.*)$ /$1 [R=301,L,NC] 
是重写对控件的任何navbar请求,格式为:www.mydomain.com/testfolder/controller/method to www.mydomain.com/testfolder/controller/method。第二条规则是,任何人www.mydomain.com/controller/method都将使用它,并在内部转换为www.mydomain.com/testfolder/controller/method

提前谢谢大家,

账单

附录-我当前的.htaccess文件:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+b1/(.*)\s [NC]
RewriteRule ^ /$1 [R=302,L]

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteRule ^(.*)$ /b1/$1 [L]

否。一旦客户端被重定向,就会发生一个新请求,并用新URL重新开始重写。

首先,您的规则有缺陷,肯定会导致无限循环

原因是第一条规则是从外部将/testfolder/aaa/bbb重定向到/aaa/bbb

现在,在重定向之后,第二条规则也将生效,因为您只是在匹配。*在那里,它将在内部转发到/testfolder/aaa/bbb/并且该规则将导致第1条规则再次生效,这将导致无限循环

不知道您的意图,但您可以使用此代码来避免循环:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+b1/([^\s]+)\s [NC]
RewriteRule ^ /$1 [R=302,L]

RewriteRule ^(.*)$ /b1/$1 [L,P]

确认其工作正常后,将R=302更换为R=301。在测试mod_重写规则时,避免使用R=301永久重定向。

那么重写后是否会重新启动.htaccess文件?假设URL仍然指向它,当然。我尝试了此操作,但导航栏请求生成的浏览器栏URL没有从/testfolder/aaa/bbb重写到/aaa/bbb。我用'/controller/method'添加了更多细节replace/aaa/bbb,这应该仍然有效。不过,你应该在你的问题中发布你最新的完整.htacess,这样我可以进一步调查。我已经用当前的htacess添加了一个附录。另外,对于我试图做的更多解释,请参见。谢谢-很可能是CI框架自己进行内部重定向。我正在做一个编辑,看看这是否适合你。很可能是CI框架在做自己的内部重定向。-我在项目中查找了其他htaccess文件。在application/cache/.htacess和1行deny from all下,这有帮助吗?不要使用R=301,它们被缓存在您无法控制的客户端浏览器上。仅使用R默认值为302
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+b1/([^\s]+)\s [NC]
RewriteRule ^ /$1 [R=302,L]

RewriteRule ^(.*)$ /b1/$1 [L,P]