我正在尝试修改我的网页,我目前使用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
我无法编写正则表达式来处理这种情况,任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
RewriteRule ^/?([^/]+)/([^/]+)/?$ /?lang=$1&RootCategory=$2
RewriteRule ^/?([^/]+)/([^/]+)(/.+)?/([^/]+)/?$ /?lang=$1&RootCategory=$2&LeafCategory=$4
答案 1 :(得分:0)
您可以通过锚定到$
(“字符串结尾”字符)来匹配网址中的最后一项:
([^/]+)$
将匹配并捕获不是/
字符的网址中的最后一组字符。