2012-07-25 43 views
-1

我有以下的代码,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

的正则表达式details.phpgotolink.php是相同的,阿帕奇没有办法告诉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/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 
2

重写条件是相同的,所以第一个将捕获的所有请求,并不会继续gotolink.php

+0

那么是什么解决方案? – Fou 2012-07-25 19:10:26

+1

你想做什么? – 2012-07-25 19:13:21