mod_rewrite的最后一条规则返回404,即使页面存在


Last rule in mod_rewrite returns 404 even though page exists

我的。htaccess文件中有以下内容:

RewriteBase /
ErrorDocument 404 /404.php
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^news/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
RewriteRule ^news/most-viewed/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]
RewriteRule ^news/categories/([a-zA-Z]+) /news/categories/view-category.php?category=$1 [NC]

除最后一条规则外,其他规则都有效。我检查了所有的页面都存在,新添加的规则和上面的规则结构一样,很困惑

变量需要改变吗?我是不是漏掉了一些代码?

解决:

RewriteBase /
ErrorDocument 404 /404.php
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^news/categories/?$ /news/categories.php [NC]
RewriteRule ^news/most-viewed/?$ /news/most-viewed.php [NC]
RewriteRule ^news/categories/([a-zA-Z]+)/?$ /news/view-category.php?category=$1 [NC]

RewriteRule ^news/categories/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+) /news/view-article.php?category=$1&id=$2&title=$3 [NC]

我漏掉了末尾的$

试试这个,让我知道是否有效

RewriteBase /
ErrorDocument 404 /404.php
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^news/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+)/?$ /news/view-article.php?category=$1&id=$2&title=$3 [NC,L]
RewriteRule ^news/most'-viewed/([a-zA-Z]+)/([0-9]+)-([a-zA-Z]+)/?$ /news/view-article.php?category=$1&id=$2&title=$3 [NC,L]
RewriteRule ^news/categories/([a-zA-Z]+)/?$ /news/categories/view-category.php?category=$1 [NC,L]