我有这个重写
RewriteCond %{THE_REQUEST} /(?:user_profile)?\?user_id=([^\s&]+)\sHTTP [NC]
RewriteRule ^ /%1? [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /user_profile?user_id=$1 [L]
正确地允许我使用域/用户名作为网址。
但是当我再添加一个类似的重写规则时,第二个不喜欢上面那个。
RewriteCond %{THE_REQUEST} /(?:group)?\?group_id=([^\s&]+)\sHTTP [NC]
RewriteRule ^ /%1? [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^group/([^/]+)/?$ /group?group_id=$1 [L]
任何人都可以帮我改写第二个像这个域/组/组名一样返回的人,同时保持第一个像域/用户名一样工作。
答案 0 :(得分:0)
你有两个问题。第一个问题是您希望在重定向请求时保留group/
前缀。
RewriteCond %{THE_REQUEST} /(?:group)?\?group_id=([^\s&]+)\sHTTP [NC]
RewriteRule ^ /group/%1? [L,R]
第二个问题是在第一次重写后,您将/group/groupname
重写为/group?group_id=groupname
。这将使/group
与用户名规则匹配。您希望阻止此前缀匹配:
RewriteCond %{REQUEST_URI} !^/group
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /user_profile?user_id=$1 [L]