首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个url重写规则,适用于6个场景

一个url重写规则,适用于6个场景
EN

Stack Overflow用户
提问于 2011-06-08 18:26:30
回答 4查看 215关注 0票数 4

我有一个适用于我的索引页面的重写规则

代码语言:javascript
复制
RewriteRule ^index$ index.php [L]
RewriteRule ^index/$ index.php [L]
RewriteRule ^index/page/(0?[1-9]|1[0-2])$ index.php?recordstart=$1 [L]
RewriteRule ^index/page/(0?[1-9]|1[0-2])/$ index.php?recordstart=$1 [L]

我有6页与类似的情况。

例如:

代码语言:javascript
复制
RewriteRule ^graduate$ graduate.php [L]
RewriteRule ^graduate/$ graduate.php [L]
RewriteRule ^graduate/page/(0?[1-9]|1[0-2])$ graduate.php?recordstart=$1 [L]
RewriteRule ^graduate/page/(0?[1-9]|1[0-2])/$ graduate.php?recordstart=$1 [L]

我正在寻找一个重写,可以匹配六个确切的场景,而不是重复四行六次。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-08 18:32:23

类似于:

代码语言:javascript
复制
RewriteRule ^(scenario1|scenario2|scenario3)$ $1.php [L]
RewriteRule ^(scenario1|scenario2|scenario3)/$ $1.php [L]
RewriteRule ^(scenario1|scenario2|scenario3)/page/(0?[1-9]|1[0-2])$ $1.php?recordstart=$2 [L]
RewriteRule ^(scenario1|scenario2|scenario3)/page/(0?[1-9]|1[0-2])/$ $1.php?recordstart=$2 [L]

感觉很脏,但如果你想排除除上述场景之外的所有其他场景。

编辑:我将在这里添加它,你可以通过检查/并在它后面加上一个?来删除2行规则,它将匹配或不匹配尾随的/。解决方案将变成:

代码语言:javascript
复制
   RewriteRule ^(scenario1|scenario2|scenario3)/?$ $1.php [L]
   RewriteRule ^(scenario1|scenario2|scenario3)/page/(0?[1-9]|1[0-2])/?$ $1.php?recordstart=$2 [L]
票数 2
EN

Stack Overflow用户

发布于 2011-06-08 18:33:29

代码语言:javascript
复制
RewriteRule ^(index|graduate)/?$ $1.php [L]
RewriteRule ^(index|graduate)/page/(0?[1-9]|1[0-2])/?$ $1.php?recordstart=$2 [L]

管道( | )在正则表达式中用来提供替代方法,实际上它的意思是“或”。您可以添加任意多个用|分隔的值。

如果您知道自己在做什么,也可以使用^([a-zA-Z]+)/?$,但这意味着您的规则将捕获仅由英文字母组成的每个值。然后,您必须处理错误。

我通过在末尾添加/?简化了您的规则,这意味着一个可选的闭合斜杠。

票数 2
EN

Stack Overflow用户

发布于 2011-06-08 18:34:51

首先,为了节省一些空间,您可以将前四个规则缩短为两个,如下所示:

代码语言:javascript
复制
RewriteRule ^index(/|)$ index.php [L]
RewriteRule ^index/page/(0?[1-9]|1[0-2])(/|)$ index.php?recordstart=$1 [L]

然后,您可以修改这两行,如下所示:

代码语言:javascript
复制
RewriteRule ^(page1|page2|page3|page4|page5|page6)(/|)$ $1.php [L]
RewriteRule ^(page1|page2|page3|page4|page5|page6)/page/(0?[1-9]|1[0-2])(/|)$ $1.php?recordstart=$1 [L]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6277342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档