Php 第一个破折号不能识别为分隔符

Php 第一个破折号不能识别为分隔符,php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,A在url重写方面有问题。 我有这个网址: 根据这条规则: RewriteRule ^apps/([^_]*)-([^_]*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC] RewriteRule ^apps/([^-]*)-(.*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC] 问题是,当我想要获取id和name参数时,返回的是: app_details.phpid=1-health&

A在url重写方面有问题。 我有这个网址:

根据这条规则:

RewriteRule ^apps/([^_]*)-([^_]*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC]
RewriteRule ^apps/([^-]*)-(.*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC]
问题是,当我想要获取id和name参数时,返回的是:

app_details.phpid=1-health&name=directory
正确的答案是

app_details.phpid=1&name=health-directory
怎么办


Thx

您的正则表达式不正确。您尝试匹配直到第一个破折号,然后使用
[^-]
而不是
[^.]
(破折号!=下划线)

试试这个规则:

RewriteRule ^apps/([^_]*)-([^_]*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC]
RewriteRule ^apps/([^-]*)-(.*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC]

你的正则表达式不正确。您尝试匹配直到第一个破折号,然后使用
[^-]
而不是
[^.]
(破折号!=下划线)

试试这个规则:

RewriteRule ^apps/([^_]*)-([^_]*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC]
RewriteRule ^apps/([^-]*)-(.*)$ /app_details.php?id=$1&name=$2 [L,QSA,NC]