我正在尝试设置.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
模式与第二个语句匹配。
检查结果
为了检查结果,我只需在 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]