我正在尝试使用以下代码重写动态网址:
RewriteRule (.*)/$ index.php?location=$1
RewriteRule (.*)/(.*)/$ index.php?location=$1&company=$2
从上面的代码中可以看出,我真的需要两次重写。首先,我需要页面只重写位置,如果那就是全部。例如,它会将site.ccom / index.php?location = sandiego转换为site.com/sandiego/
这是正常的。
但是,当我尝试添加第二个变量时,它会失败。它设法检测& company = 1变量,但由于某种原因,它将?location = sandiego变量返回为'index.php'。例如,如果我输入以下内容:site.com/san-diego/1/然后尝试获取$ location和$ company变量,它将只成功获得$ company变量,并且将设置$ location变量'index.php',而不是'san-diego'。
非常感谢任何帮助。
答案 0 :(得分:1)
我想我找到了解决方案。我正在使用以下内容:
RewriteRule ^([a-z0-9-]+)/?$ index.php?location=$1 [NC]
RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/?$ index.php?location=$1&company=$2 [NC]
这似乎工作得很好,并成功重定向site.com/sandiego/和site.com/sandiego/1 /
答案 1 :(得分:0)
试试那些:
RewriteRule ^([a-z0-9]+)/?$ index.php?location=$1 [NC]
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/?.*$ index.php?location=$1&company=$2 [NC]
请记住,在进行URL重写时尝试捕获任何字符序列(通过使用例如(.*)
或(.+)
)通常是一个坏主意,如此主题中所述:{{ 3}}
答案 2 :(得分:0)
Try([^\/]*)/([^\/]*)/$
instead of(.*)/(.*)/$