htaccess导致错误

时间:2012-07-25 18:38:54

标签: php .htaccess

我有以下代码,

details.php 工作正常。但当我访问 gotolink.php 时,它再次在 details.php 页面中指示我,这给了我404错误,因为它是意外的网址。

RewriteEngine On

RewriteRule ^([a-zA-Z0-9-/]+)$ uk/details.php?pid=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ uk/details.php?pid=$1

RewriteRule ^([a-zA-Z0-9-/]+)$ gotolink/gotolink.php?id=$1
RewriteRule ^([a-zA-Z0-9-/]+)/$ gotolink/gotolink.php?id=$1

请帮忙!

2 个答案:

答案 0 :(得分:2)

重写条件是相同的,所以第一个将捕获所有请求,它永远不会到达gotolink.php

答案 1 :(得分:2)

details.phpgotolink.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

detail.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/g/abc123转到/gotolink/gotolink.php?id=abc123。或者你可以将它们分开,如果细节pid总是字母而且gotolink id总是数字或者其他东西:

RewriteRule ^([a-zA-Z-/]+)$ uk/details.php?pid=$1

RewriteRule ^([0-9-/]+)$ gotolink/gotolink.php?id=$1
相关问题