我有下面的重写规则,我在我的网站上使用:
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]