重写规则工作1-4个参数,但不为1个参数



我有下面的重写规则,我在我的网站上使用:

RewriteEngine On
RewriteRule ^([^/]*)$ /code.php?name=$1 [L]
RewriteRule ^([^/]*)/([^/]*)$ /code.php?name=$1&state=$2 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /code.php?name=$1&state=$2&district=$3 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /code.php?name=$1&state=$2&district=$3&city=$4 [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /code.php?name=$1&state=$2&district=$3&city=$4&branch=$5 [L]

最后4条规则都工作得很好,但是第一条规则在访问时抛出500个错误。我做了一个小时的实验。最后得到的解有点奇怪。我编辑了第一条规则:

 RewriteRule ^([^/]*)/$ /code.php?name=$1 [L]

当我在query参数后面添加一个正斜杠时,它会工作,但是当没有正斜杠时抛出404错误。

任何帮助将是伟大的!欢呼。

使用+量词代替*,并且规则顺序相反:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /code.php?name=$1&state=$2&district=$3&city=$4&branch=$5 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /code.php?name=$1&state=$2&district=$3&city=$4 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /code.php?name=$1&state=$2&district=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ /code.php?name=$1&state=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ /code.php?name=$1 [L,QSA]

最新更新