我是.htaccess
和rewrite 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]
答案 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]