我有脑痉挛。我正在使用htaccess来重写页面,有时传递的变量在变量中会有/
(正斜杠)。有时会出现斜线,有时会出现斜线但是将所有这些都视为一个变量非常重要。我真的不想用str_replace()
重新编程我的所有页面,以便为-
切换/
,然后调用数据库。例如:
http://www.example.com/accounting/finance.htm
Accounting/Finance
是我需要的一个变量.....它不在会计目录中,然后在会计中有一个名为finance.htm的页面。到目前为止,我有类似
RewriteRule ^([A-Za-z]+.*[A-Za-z]*)\.htm$ mypage.php?page=$1 [L,NC]
但它不喜欢它。
有人能帮助我吗?
提前致谢。
回复评论/答案
我正在寻找的具体规则是这样的......
[字符串的开头] ...一个或多个字母...... [一个或多个字母的可能性] .htm [字符串结尾]
下面给出的两个答案都不起作用......我很确定它一直将它视为目录而不是实际的“文件名”。一旦我删除正斜杠,页面就可以正常工作......
答案 0 :(得分:4)
如果我找对你,你只需要这个:
([A-Za-z/]*)\.htm
它应该适用于/或不是/ /
的每个组合e.g。
accounting/finance.htm
test.htm
答案 1 :(得分:2)
斜线只是另一个角色。除此之外,你的正则表达式看起来不必要复杂。例如,.*[A-Za-z]*
与.*
没有区别,如果您使用[A-Za-z]
标记,[a-z]
也可以缩短为[NC]
。
你的确切规则并不完全清楚,但你可能想要这方面的东西:
RewriteRule ^([a-z/]+)\.htm mypage.php?page=$1