htaccess - 只有存在2个短划线才能访问

时间:2014-09-02 16:10:42

标签: regex apache .htaccess mod-rewrite

我目前用于查找用户的重写规则是:

RewriteRule ^admin/users/(.*)-([0-9]+)$ /index.php?hook=admin&url=users&search=$1&page=$2 [NC]
RewriteRule ^admin/users/(.*)$ /index.php?hook=admin&url=users&search=$1 [NC]

我可以找到

@username test

@email email@yahoo.com

@id 123

但是当我按id / admin / users / @ id- 755 搜索时, id被识别为页面

我想只有在包含2个短划线时才能首先访问重写 类似的东西

RewriteRule ^ admin / users /(。*)([ - {2}])([0-9] +)$

有人有想法吗? 感谢

@anubhava

所以我可以通过用户名,电子邮件或身份证找到

url.com/admin/users/@username-test

url.com/admin/users/@email-email@yahoo.com

url.com/admin/users/@id- 222 但此处的ID被识别为页面,我们也可以使用

这样的页面
                    ID-PAGE
                     | |

url.com/admin/users/@id- 222 -2,网址在网址中正常运行

1 个答案:

答案 0 :(得分:1)

你的规则如下:

RewriteEngine On

# don't execute further rules for real files/directories
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^admin/users/(.*?-.*?)-([0-9]+)/?$ /index.php?hook=admin&url=users&search=$1&page=$2 [NC,L,QSA]

RewriteRule ^admin/users/(.+)$ /index.php?hook=admin&url=users&search=$1 [NC,L,QSA]