Mod rewrite Mod重写部分匹配

Mod rewrite Mod重写部分匹配,mod-rewrite,redirect,Mod Rewrite,Redirect,我正在编写一个web应用程序,并试图使用mod rewrite来整理我的URL。我在htaccess文件中使用了以下内容,但存在一个问题。如果您尝试转到/members,它会将您带到正确的页面,但如果您尝试转到/members/1234,它仍然会将您带到members.php页面,而不是member_profile.php页面。我知道这是因为请求符合第一条规则,但我不知道修复此问题的最佳方法。我应该先用最严格的方法重新排序,还是有更正确的方法?谢谢 RewriteEngine On # prev

我正在编写一个web应用程序,并试图使用mod rewrite来整理我的URL。我在htaccess文件中使用了以下内容,但存在一个问题。如果您尝试转到/members,它会将您带到正确的页面,但如果您尝试转到/members/1234,它仍然会将您带到members.php页面,而不是member_profile.php页面。我知道这是因为请求符合第一条规则,但我不知道修复此问题的最佳方法。我应该先用最严格的方法重新排序,还是有更正确的方法?谢谢

RewriteEngine On
# prevent indexing directories
Options -Indexes
# members section
RewriteRule ^members /scripts/members.php
# member profile page
RewriteRule ^members/([0-9]+) /scripts/member_profile.php?id=$1
# groups section
RewriteRule ^groups /scripts/groups.php
# group profile page
RewriteRule ^groups/([0-9]+) /scripts/group_profile.php?id=$1

您需要使用
$
(还需要使用
L
标志停止重写)匹配字符串的结尾:


现在,我已经把更精确的规则放在了第一位,剩下更一般的规则来选择剩余的URL。谢谢。现在我明白了,这是有道理的。
RewriteEngine On
# prevent indexing directories
Options -Indexes
# members section
RewriteRule ^members$ /scripts/members.php [L]
# member profile page
RewriteRule ^members/([0-9]+)$ /scripts/member_profile.php?id=$1 [L]
# groups section
RewriteRule ^groups$ /scripts/groups.php [L]
# group profile page
RewriteRule ^groups/([0-9]+)$ /scripts/group_profile.php?id=$1 [L]