我无法让我的网址重写工作,我目前有这3条规则
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
我要添加一条规则,如果用户点击http://example.com/metrics/,它会将它们发送到index.php?/ sign-in
我尝试过RewriteRule /metrics/(.*) /index.php?/sign-in [PT]
,但它似乎与。*规则相冲突,并且根本没有将用户发送到/index.php?/sign-in。
答案 0 :(得分:1)
如果您的逻辑上存在逻辑冲突,请在更一般的规则之前添加更具体的规则。
为了您的目的,这样的事情应该有效:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^metrics/?(.*)$ /index.php?/sign-in [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
顺便说一下,您可能需要考虑修改您的方法。
如果用户已登录怎么办?也许,您的/metrics
页面的行为(.htaccess)与其他页面的行为相同,并且其代码与您选择的语言中的if( !SignedIn() ) Redirect( "/sign-in" )
相同。