我陷入了一条非常复杂的规则,我正试图完成。 我有4个不同的可选参数,以不同的形式显示。
我一直在使用一套非常长的规则但是我发现它无法使用多个参数。
到目前为止我的代码是这样的。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^library/from/([0-9]+)$ library.php?year=$1
RewriteRule ^library/upto/([0-9]+)$ library.php?year2=$1
RewriteRule ^library/([0-9]+)-([0-9]+)$ library.php?year=$1&year2=$2
RewriteRule ^library/query=(.*)$ library.php?query=$1
RewriteRule ^library/([a-z-]+)$ library.php?category=$1
RewriteRule ^library/([a-z-]+)?/([0-9]+)-([0-9]+)?/query=(.*)?$ library.php?category=$1&year=$2&year2=$3&query=$4
年份部分有3个不同的集合。它的2个变量和3个输出,缺少其中一个。 有没有办法解决它或清理它并使用更聪明的方法? 编辑。它正在使用所有4个参数。
提前致谢。
答案 0 :(得分:0)
试试这个:
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^library/from/([0-9]+)/?$ library.php?year=$1 [L,QSA]
RewriteRule ^library/upto/([0-9]+)/?$ library.php?year2=$1 [L,QSA]
RewriteRule ^library/([0-9]+)-([0-9]+)/?$ library.php?year=$1&year2=$2 [L,QSA]
RewriteRule ^library/query=(.+)$ library.php?query=$1 [L,QSA]
RewriteRule ^library/([a-z-]+)/?$ library.php?category=$1 [L,QSA]
RewriteRule ^library/([a-z-]+)/([0-9]+)-([0-9]+)?/query=(.+)$ library.php?category=$1&year=$2&year2=$3&query=$4 [L,QSA]