找不到.htaccess和重写规则404

时间:2016-01-16 19:13:27

标签: .htaccess mod-rewrite url-rewriting

我是.htaccessrewrite rules的新人。 所以如果我的问题不相关,请原谅我。

我有以下htaccess代码。

RewriteRule ^([^/]+)/([^/]+)/?$ article-list.php?link=$1&page=$2 [L,QSA]

如果我访问www.example.com/category/0之类的网址,则可行。 但如果我剥离页面网址和最后一个斜线www.exapmle.com/category,我会看到一个丑陋的404页面。

我的htaccess指令有什么问题?

提前致谢。

编辑:Compeletely .htaccess

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^haber/([^/]+)-([^/]+)/?$ article.php?link=$1&i=$2 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ article-list.php?link=$1&page=$2 [L,QSA]

1 个答案:

答案 0 :(得分:1)

这是正确的行为 实际上,在正则表达式中,+表示at least one

使用([^/]+)时,表示at least one character which is not a slash 您的规则^([^/]+)/([^/]+)/?$表示at least one character which is not a slash / at least one character which is not a slash 可选斜杠

这就是为什么它不能仅与第一部分网址一起使用。 如果您还想处理example.com/category,则需要另一条规则:

RewriteRule ^([^/]+)/?$ article-list.php?link=$1 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ article-list.php?link=$1&page=$2 [L]