0

我在让我的 URL 重写工作时遇到问题,我目前有这 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 。

4

1 回答 1

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" )您选择的语言相同。

于 2013-05-24T17:47:54.727 回答