我已经面对这个问题了很长一段时间,但我总是只是更改文件名,但这次我不能这样做
我设置了以下两个RewriteRules:
RewriteRule ^register-company register-company.php
RewriteRule ^register register.php
同样适用于
RewriteRule ^register/company register-company.php
RewriteRule ^register register.php
无论我做什么,更改顺序,添加标记,逃避炒作,它总是重定向到register.php而不是register-company,因为它应该(链接是domain.com/register-company)
实际上唯一有效的是完全改变名称,例如改为公司注册。请注意,如果我删除寄存器register.php行它可以正常工作并正确重定向到register-company.php
答案 0 :(得分:1)
问题是您的目标URI register-company.php
也匹配下一个规则的模式,即^register
,因此第二个规则始终在第一个规则之后执行。
您需要在规则中使用结束锚点:
RewriteRule ^register-company/?$ register-company.php [L,NC]
RewriteRule ^register/?$ register.php [L,NC]
现在第二条规则不会触发,因为register-company.php
与^register/?$
不匹配。
同样/?$
在两个规则中都使用尾随斜杠。