details.php
和的正则表达式gotolink.php
是相同的,apache 无法判断是否http://domain.com/abc123
应该重写/uk/details.php?pid=abc123
或/gotolink/gotolink.php?id=abc123
因为 URI/abc123
匹配这两个:
RewriteRule ^([a-zA-Z0-9-/]+)$ uk/details.php?pid=$1
RewriteRule ^([a-zA-Z0-9-/]+)$ gotolink/gotolink.php?id=$1
details.php 是第一位的,这就是为什么所有内容都被重写为 details.php 的原因。如果你交换它们,一切都会被重写为 gotolink.php。您必须使这些正则表达式匹配不同。例子:
RewriteRule ^d/([a-zA-Z0-9-/]+)$ uk/details.php?pid=$1
RewriteRule ^g/([a-zA-Z0-9-/]+)$ gotolink/gotolink.php?id=$1
所以现在/d/abc123
去去去。/uk/details.php?pid=abc123
_ 或者,如果详细信息 pid 始终是字母并且 gotolink id 始终是数字或其他内容,您可以将它们分开:/g/abc123
/gotolink/gotolink.php?id=abc123
RewriteRule ^([a-zA-Z-/]+)$ uk/details.php?pid=$1
RewriteRule ^([0-9-/]+)$ gotolink/gotolink.php?id=$1