.htaccess继续进行内部重定向


.htaccess continues to internal redirect

我完全被mod_rewrite的巫术所迷惑了。我们最近在aws上迁移到一个新的ubuntu服务器上,除了一个。htaccess文件外,一切似乎都很正常。这个文件在以前的服务器上运行得很好,但是在新服务器上运行得很好。

相关页面为testing.sonicdad.com/members/admin/。这应该重定向到testing.sonicdad.com/members/admin.php而不是testing.sonicdad.com/members/admin/index.php

我已经剥离了。htaccess,只剩下这个页面的相关代码,但仍然有问题。

RewriteEngine On
RewriteBase /members
## Append Trailing "/" to URL if absent ##
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$   /members/$1/    [L,R=301]
RewriteRule ^admin/$  admin.php [L]

这是日志的相关部分

[rewrite:trace3] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] strip per-dir prefix: /var/www/html/members/admin/ -> admin/
[rewrite:trace3] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] applying pattern '^(.*)$' to uri 'admin/'
[rewrite:trace4] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] RewriteCond: input='/var/www/html/members/admin/' pattern='!-f' => matched
[rewrite:trace4] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] RewriteCond: input='/members/admin/' pattern='!(.*)/$' => not-matched
[rewrite:trace3] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] strip per-dir prefix: /var/www/html/members/admin/ -> admin/
[rewrite:trace3] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] applying pattern '^admin/$' to uri 'admin/'
[rewrite:trace2] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] rewrite 'admin/' -> 'admin.php'
[rewrite:trace3] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] add per-dir prefix: admin.php -> /var/www/html/members/admin.php
[rewrite:trace2] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] trying to replace prefix /var/www/html/members/ with /members
[rewrite:trace4] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] add subst prefix: admin.php -> /members/admin.php
[rewrite:trace1] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e168600a0/initial] [perdir /var/www/html/members/] internal redirect with /members/admin.php [INTERNAL REDIRECT]
[rewrite:trace1] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e0ced10a0/subreq] [perdir /var/www/html/members/] pass through /var/www/html/members/admin/index.html
[rewrite:trace1] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e0ced10a0/subreq] [perdir /var/www/html/members/] pass through /var/www/html/members/admin/index.cgi
[rewrite:trace1] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e0ced10a0/subreq] [perdir /var/www/html/members/] pass through /var/www/html/members/admin/index.pl
[rewrite:trace1] [pid 26730] mod_rewrite.c(468): [client 121.202.24.118:13894] 121.202.24.118 - - [testing.sonicdad.com/sid#7f8e16990038][rid#7f8e0ced10a0/subreq] [perdir /var/www/html/members/] pass through /var/www/html/members/admin/index.php

问题似乎是内部重定向。为了阻止这种情况,我已经尝试将标志修改为[END]。我还尝试了以下的变体:

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{ENV:REDIRECT_STATUS} !=200

谁能告诉我如何停止这个内部重定向规则应用后。

谢谢

这里还有其他。htaccess文件吗?比如在你的子目录中,比如/admin/?

也试着交换你的htaccess文件的最后两行,

RewriteRule ^admin/$  admin.php [L]
RewriteRule ^(.*)$   /members/$1/    [L,R=301]

据我所知,Switch [L]意味着它是要使用的最后一个规则。试着把它也去掉。

我们无法解决这个问题,所以我们修改了文件夹结构,所以没有复制文件名和文件夹名称,即admin.php和admin/.

这实际上意味着我们有了一个更干净更描述性的文件夹结构我很喜欢