在网址RewriteRule中匹配'article'

时间:2010-05-28 11:33:07

标签: apache .htaccess mod-rewrite

构建一个包含每个部分内容的网站。

网址范围从; /工作/
/工作/打印/
/ work / print / folders等。

但是,用户可以随时点击文章;
/工作/条/ 1066
/工作/打印/条/ 1066
/ work / print / folders / article / 1066

使用.htaccess我需要检测url中何时有“article”并设置一些不同的变量。

RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/$ 
sets  index.php?level1=$1&level2=$2&level3=$3&level4=$4

但如果'article /([0-9 - ] +)'在网址中,请说/ work / print / article / 1066返回     的index.php 1级= $ 1和;级别2 = $ 2及条款ArticleID = 1066

基本上水平的数量总是不同但我想根据需要返回。 另一个例子是/ work / print / folder / archive / article / 1066 return

index.php?level1=$1&level2=$2&level3=$3&level4=$4&articleID=1066

任何帮助表示赞赏!丹

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是在php脚本中进行电平检测。

RewriteRule ^(.+)/article/(\d+)$ index.php?levelsUri=$1&articleID=$2

然后,您可以解析“levelsUri”请求值并检测php脚本中的级别。

答案 1 :(得分:0)

最后我只是手动完成! (虽然更喜欢更广泛的解决方案)

# MENU ###

RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/$  index.php?level1=$1&level2=$2&level3=$3 [L]

RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/$  index.php?level1=$1&level2=$2 [L]

RewriteRule ^([a-zA-Z0-9\-]+)/$  index.php?level1=$1 [L]


###  WITH ARTICLE  ###


RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/article/([0-9\-]+)/([a-zA-Z0-9\-]+)$$  index.php?level1=$1&level2=$2&level3=$3&articleID=$4 [L]

RewriteRule ^([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/article/([0-9\-]+)/([a-zA-Z0-9\-]+)$$  index.php?level1=$1&level2=$2&articleID=$3 [L]

RewriteRule ^([a-zA-Z0-9\-]+)/article/([0-9\-]+)/([a-zA-Z0-9\-]+)$  index.php?level1=$1&articleID=$2 [L]


RewriteRule ^$  index.php?level1=home [L]
相关问题