我正在尝试做什么
我想重定向:
www.example.com/home/place
至www.example.com/index.php?location=place
www.example.com/home
至www.example.com/index.php
。我做了什么
在.htaccess
中,我有以下一行:
RewriteRule ^home/([^/]*)$ index.php?location=$1 [L]
这是第1部分。然而,有了这个,第2部分不起作用。但是,如果我在上面写之前写这个:
RewriteRule ^home index.php [L]
然后第2部分起作用,但第1部分不起作用。
长话短说,我无法弄清楚如何启用这两个规则。这是可能的,如果是这样的话?
答案 0 :(得分:1)
问题在于
RewriteRule ^home index.php [L]
将匹配两个示例,因为它们都以“home”开头。请尝试以下方法:
RewriteRule ^home/?$ index.php [L]
这将匹配/ home和/ home /但不匹配/ home / foo。
答案 1 :(得分:1)
您的第一条规则将参数设为“可选”,因为您使用的是*
而不是+
:
RewriteRule ^home/([^/]+)$ index.php?location=$1 [L]
此外,您的第二条规则中没有$
来表示URI的结尾:
RewriteRule ^home/?$ index.php [L]
现在规则可以按照您想要的任何顺序排列。