Apache为动态生成的URL重写正则表达式

时间:2014-04-03 07:46:10

标签: apache .htaccess mod-rewrite

我尝试对动态生成的网址进行重写。我的问题是我无法找到正确的正则表达式语法来检查:

或者它可以是数字然后是单词,或者它可以是数字然后是数字然后是单词或者最后它可能是 2个带连字符的单词。我想知道我是否需要为每个实例编写多个重写?

这是我的重写示例和我需要比较的字符集的一些示例。

RewriteRule ^search/strand/([???]+)$ ?p=search&strand=$1
经典,30剧院,45/50剧场,工作室/电影1,星期五战斗之夜

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

我用这种语法对它进行了排序,但是如果可以做得更好我想知道,请用想法进行评论。

以上面的例子为例,写法是一样的:

RewriteRule ^search/strand/([???]+)$ ?p=search&strand=$1

的正则表达式
  • 经典 [a-z] +
  • 30剧场 [0-9] + [\ s] + [a-z] +
  • 45/50剧场 [0-9] + / + [0-9] + [\ s] + [a-z] +
  • 工作室/电影1 [a-z] + / + [a-z] + [\ s] + [0-9] +
  • 星期五战斗之夜 [0-9] + [\ s] + [a-z] + [\ W] + [a-z] +

然后将它们与 | 链接在一起,以便生成的重写看起来像:

RewriteRule ^search/strand/([a-z]+|[0-9]+[\s]+[a-z]+|[0-9]+\/+[0-9]+[\s]+[a-z]+|[a-z]+\/+[a-z]+[\s]+[0-9]+|[0-9]+[\s]+[a-z]+[\W]+[a-z]+)$ ?p=search&strand=$1