HTACCESS重定向到错误的页面

时间:2015-06-30 11:18:07

标签: regex apache .htaccess redirect

当用户在地址栏中输入网址http://localhost/systems/admin时,我需要将用户重定向到网页http://localhost/systems/admin/login/

输入/admin

后工作正常

当我输入/admin/(注意尾随斜杠)时,它无法正常工作,它会将我重定向到其他某个页面http://localhost/systems/user/login,但我希望它将我重定向到同一页面http://localhost/systems/admin/login/

以下是我的整个.htaccess代码

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /systems/

RewriteRule ^admin$ http://localhost/systems/admin/login/ [R=301,L]

RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>

1 个答案:

答案 0 :(得分:1)

使用.htaccess配置,您只能将/admin重定向到/admin/login/

为了支持可能的尾随斜杠,您应该选择以下内容:

RewriteRule ^admin/?$ http://localhost/systems/admin/login/ [R=301,L]

一般来说,我只会坚持使用一种符号(带或不带尾部斜杠)并添加一条始终纠正错误符号的规则(即添加或删除尾部斜杠)。删除尾部斜杠的规则可以是:

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

使用这样的规则,您可以坚持原始的重写规则。但是,在这种情况下,您应该始终注意返回没有尾部斜杠的地址,以避免在没有必要时重写:

RewriteRule ^admin$ http://localhost/systems/admin/login [R=301,L]