繁体   English   中英

htaccess中的RewriteRule优先级

[英]RewriteRule precedence in htaccess

我正在尝试设置.htaccess文件以重写URL。

设定

这是我当前的.htaccess设置:

RewriteEngine On
Options -Multiviews

RewriteRule ^admins/login.html$ mvc.php?rt=admins/login
RewriteRule ^([^/]+)/([^/]+).html$ mvc.php?rt=$1&id=$2

这个想法是使admins/login.html模式与第一个RewriteRule语句匹配,而其他xxxx/xxxx.html模式与第二个xxxx/xxxx.html


检查结果

要检查结果,我只是在mvc.php上打印接收到的值

echo 'rt = '.$_REQUEST['rt'].', id = '.$_REQUEST['id']; 

键入admins/login.html模式

  • 我的目标: rt = admins/login, id =
  • 我得到什么: rt = mvc.php, id = login

当我评论第二条RewriteRule语句时,一切正常。
网址重写规则中是否有优先级? 我想念什么?

这是因为您的规则执行了不止一次。 要停止此行为,请使您的.htaccess像这样:

Options -Multiviews
RewriteEngine On

# REDIRECT_STATUS is set to 200 after first rule execution
RewriteCond %{ENV:REDIRECT_STATUS} .+
RewriteRule ^ - [L]

RewriteRule ^admins/login\.html$ mvc.php?rt=admins/login [L,QSA,NC]

RewriteRule ^([^/]+)/([^/]+)\.html$ mvc.php?rt=$1&id=$2 [L,QSA,NC]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM