(递归).htaccess文件的正则表达式

时间:2010-02-23 01:54:01

标签: regex .htaccess mod-rewrite seo url-rewriting

我正在尝试修改我的网页,我目前使用QueryStrings来显示网页,并希望将网站网址更改为“搜索引擎友好”网页。

我是正则表达式的新手,也是.htaccess文件中的新手,我想从

更改网址
http://someaddress.bla/index.php?lang=en&rootCategory=$rootCaty&leafCategory=$leafCat

http://someaddress.bla/en/$rootCat/$sub-category/$sub-category2/.../$leafCat

类别以递归方式存储在数据库中,因此,我必须在URL中显示每个类别级别。但我需要的只是网址中的最后一个类别。例如,类别可以是根类别,如:

http://someaddresss.bla/en/Company

目前显示在网址中:

http://someaddress.bla/?lang=en&RootCategory=Company

或者它可能是一个子类别,如:

http://someaddress.bla/en/Company/AboutUs

目前显示在网址中:

http://someaddress.bla/?lang=en&RootCategory=Company&LeafCategory=AboutUs

或者可能是一片叶子:

http://someaddress.bla/en/Company/AboutUs/Staff/.../Steve其中“Steve”是递归中的叶子。 此页面当前显示在URL:

http://someaddress.bla/?lang=en&RootCategory=Company&LeafCategory=Steve

我无法编写正则表达式来处理这种情况,任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:2)

RewriteRule ^/?([^/]+)/([^/]+)/?$ /?lang=$1&RootCategory=$2
RewriteRule ^/?([^/]+)/([^/]+)(/.+)?/([^/]+)/?$ /?lang=$1&RootCategory=$2&LeafCategory=$4

答案 1 :(得分:0)

您可以通过锚定到$(“字符串结尾”字符)来匹配网址中的最后一项:

([^/]+)$

将匹配并捕获不是/字符的网址中的最后一组字符。