Php 多个动态url重写重定向到404页面
我正在做一个从数据库获取数据的项目。我用URL重写的方法。我正在使用重写方法,它将重定向到错误页面 动态urlPhp 多个动态url重写重定向到404页面,php,apache,url,web-applications,url-rewriting,Php,Apache,Url,Web Applications,Url Rewriting,我正在做一个从数据库获取数据的项目。我用URL重写的方法。我正在使用重写方法,它将重定向到错误页面 动态url http://www.sample.com/?cat=kk 重写的URL http:/www.sample.com/kk 为重写此URL而编写的.htaccess文件 RewriteEngine On RewriteRule ^([^/]*)$ /?cat=$1 [L] .htaccess文件还包含另一个url重写 RewriteRule ^([^/]*)/([^/]*)/([
http://www.sample.com/?cat=kk
重写的URL
http:/www.sample.com/kk
为重写此URL而编写的.htaccess
文件
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
我遇到的问题是,当我访问任何页面时,它将重定向到服务器默认错误页面。很抱歉这么说,但是您的重写规则很混乱 总是从最复杂的到最简单的开始 您已经忘记了最重要的指令之一:
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]
尝试检查您的
错误日志
文件以获得提示,然后注释掉所有重写规则并逐个启用它们,直到您发现哪一条规则破坏了内容。您的示例中的最后两条规则要求在它们下面有一条重写规则,我在您的代码中没有看到这条规则?在404错误中,有什么URL没有找到?您需要为每个规则重写COND,这样规则就不会无限期地运行。