Regex 正则表达式重写规则
我正在努力使用mod rewrite正则表达式,它从URL提取语言并将其转换为http参数 我想重写Regex 正则表达式重写规则,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我正在努力使用mod rewrite正则表达式,它从URL提取语言并将其转换为http参数 我想重写 mydomain/FR/workingdays\u per\u month\u 2015.htminto mydomain/tables.php?annnecal=2015&language=FR 及 mydomain/ES/workingdays\u per\u month\u 2016.htmintomydomain/tables.php?annnecal=2016&language=ES
mydomain/FR/workingdays\u per\u month\u 2015.htm
into
mydomain/tables.php?annnecal=2015&language=FR
及
mydomain/ES/workingdays\u per\u month\u 2016.htm
intomydomain/tables.php?annnecal=2016&language=ES
以下规则有效:
RewriteRule ^([A-Z]{2,2})/workingdays_per_month_([0-9]*).htm tables.php?anneecal=$2&language=$1 [L]
如果url中省略了语言,我想重写为默认语言(英语):
mydomain/workingdays\u per\u month\u 2015.htm
intomydomain/tables.php?annnecal=2015&language=EN
所以我增加了这个规则:
RewriteRule ^workingdays_per_month_([0-9]*).htm tables.php?anneecal=$1&language=EN [L]
这两条规则分别起作用,但不能同时起作用
如果我每月访问mydomain/workingdays\u\u 2015.htm
我得到了该页面的404(未找到)(当这两个规则在.htacess中一个接一个地添加时)。您可以像这样保留规则:
RewriteEngine On
RewriteRule ^([A-Z]{2})/workingdays_per_month_([0-9]+)\.htm$ tables.php?anneecal=$2&language=$1 [L,QSA,NC]
RewriteRule ^workingdays_per_month_([0-9]+)\.htm$ tables.php?anneecal=$1&language=EN [L,QSA,NC]
确保将这些规则放在其他规则之前。我的问题实际上来自于运行在windows上的记事本++编辑器和运行在Unix上的web服务器 我的行尾是[LF] 我的Unix服务器期望EOL为[CR][LF],因此只看到一条规则,而不是两条 在记事本++中, 使用查看|显示符号|显示行尾 及 编辑|下线转换| Unix
解决了我的问题。您想在此提供更多详细信息吗。