.htaccess Regex:将2个规则合并为1个

35g0bw71  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个.htacces规则。我需要找到一个点后的第一个整数(或不是)。下面是一个很好的数据样本,它匹配并找到了第一个捕获组:

discography/type
discography/type/
discography/type/4
discography/type/albums.4

字符串
下面是一个错误数据示例:

discography/type/4//
discography/type//
discography/type/singles.4//


有效的规则是:

RewriteRule ^discography\/type(?:\/(?:(?:[^\/]*[.])?(\d+)\/?|[^\/]+\/?)?)?$ discography/releases.php?type=$1 [L,QSA]


到目前为止,一切都很好:https://regex101.com/r/4BwJ7z/1
这就是我需要帮助的地方
我还有另一个规则,匹配几个关键字(epsingles)作为第一个捕获组:

discography/ep
discography/ep/
discography/singles
discography/singles/

RewriteRule ^discography\/(ep|singles)\/?$ discography/releases.php?type=$1 [L,QSA]


https://regex101.com/r/dGEDdx/1
我需要把这两条规则合并成一条。有什么想法吗

u7up0aaq

u7up0aaq1#

  • 第一种解决方案:* 在单一规则中,请尝试以下.htaccess规则。这里是Online demo of regex
RewritEngine ON

RewriteRule ^discography\/(?:(ep|singles)|type(?:\/?(?:(?:[^\/]*[.])?(\d+)\/?|[^\/]+\/?)?))\/?$ discography/releases.php?type=$1$2 [L,QSA,NC]

字符串

  • 第二个解决方案:* 如何将这两个规则保存到您的.htaccess规则文件中。我的意思是,在一个时间只有规则可以通过,对不对?因此,1美元只能给予1个值。我还添加了NC标志来启用规则上的忽略大小写。
RewriteEngine ON

RewriteRule ^discography\/(ep|singles)\/?$ discography/releases.php?type=$1 [L,QSA,NC]

RewriteRule ^discography\/type(?:\/(?:(?:[^\/]*[.])?(\d+)\/?|[^\/]+\/?)?)?$ discography/releases.php?type=$1 [L,QSA,NC]

相关问题