0

我正在做一个从数据库中获取数据的项目。我使用的是 URL 重写方法。我正在使用重写方法它会重定向到错误页面

动态网址

http://www.sample.com/?cat=kk

重写的网址

http:/www.sample.com/kk

.htaccess为此 URL 重写编写的文件

RewriteEngine On
RewriteRule ^([^/]*)$ /?cat=$1 [L]

.htaccess 文件还包含另一个 url 重写

 RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /?cat=$1&sub=$2&year=$3&page=$4 [L]


 RewriteRule ^([^/]*)/([^/]*)$ /?cat=$1&sub=$2 [L]

 RewriteRule ^([^/]*)/([^/]*)$ /?cat=$1&sub=$2 [L]

 RewriteRule ^([^/]*)/([^/]*)/$ /?cat=$1&sub=$2 [L]

 RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /?cat=$1&sub=$2&pag=$3 [L]

 RewriteRule ^([^/]*)/$ /?cat=$1 [L]

  RewriteCond %{REQUEST_FILENAME} !-f

  RewriteCond %{REQUEST_FILENAME} !-d

我遇到的问题是,当我访问任何页面时,它将重定向到服务器默认错误页面。

4

1 回答 1

0

我很抱歉这么说,但你的重写规则很乱。

总是从最复杂的开始到最简单的。

而且您忘记了最重要的指令之一:QSA. 我让你用谷歌搜索这个;)

也许接下来的内容仍然不起作用,但它更干净。我们需要日志文件来了解发生了什么。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /?cat=$1&sub=$2&year=$3&page=$4 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/([^/]*)\.html$ /?cat=$1&sub=$2&page=$3 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ /?cat=$1&sub=$2 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ /?cat=$1 [QSA,L]
于 2012-08-07T19:42:26.990 回答