我有一个之前的问题得到了很好的回答,但需要修改,我无法回答,所以创建了一个新问题。
我需要一个 mod_rewrite 进行以下操作:
www.example.com?page=var1&cat=var2&subcat=var3&subsubcat=var4
进入这个:
www.example.com/var1/var2/var3/var4/
但这也涵盖了 var2、var3 和 var4 的可选使用,因此如果这些变量为空,它仍然可以工作。
这个问题得到了很好的回答,但它需要修改才能使用 var2、var3 和 var4 的不同字段选项。
我的代码是:
RewriteEngine on
Options +FollowSymlinks -MultiViews
RewriteCond %{QUERY_STRING} !^page= [NC]
RewriteRule ^([^/]+)/?$ /?page=$1 [L]
RewriteCond %{QUERY_STRING} !^page= [NC]
RewriteRule ^([^/]+)/([^/]*)/?$ /?page=$1&cat=$2 [L]
RewriteCond %{QUERY_STRING} !^page= [NC]
RewriteRule ^([^/]+)/([^/]*)/([^/]*)/?$ /?page=$1&cat=$2&subcat=$3 [L]
RewriteCond %{QUERY_STRING} !^page= [NC]
RewriteRule ^([^/]+)/([^/]*)/([^/]*)/([^/]*)/?$ /?page=$1&cat=$2&subcat=$3&subsubcat=$4 [L]
这可行,但我需要它能够做出 if-or-else 来选择哪个字段用于哪个变量并区分差异。
例如,如果我们正常有以下两个字符串,就很容易区分哪个字段对应哪个变量:
www.example.com?page=var1&cat=var2&subcat=var3&subsubcat=var4
www.example.com?othervar1=var1&othervar2=var2&othervar3=var3&othervar4=var4
但是对于这个字符串,它需要能够区分变量用于哪个字段:
www.example.com/var1/var2/var3/var4/
我需要 mod_rewrite 来选择正在使用的。
除此之外,当我实际转到确实存在的文件夹时,它确实可以正常工作。例如,如果我转到一个名为“test”的文件夹,它是一个实际文件夹:
www.example.com/test/
它使用它作为“页面”字段的变量。如果我在没有结束正斜杠的情况下使用以下内容:
www.example.com/test
它将以下内容输出到 URL 中:
www.example.com/test/?page=test
我需要它来处理正常存在的文件夹。
请有人能告诉我这是怎么做到的吗?我将不胜感激解决此问题的任何帮助。
另外,有人能告诉我一开始的“-MultiViews”位是什么意思吗,因为我以前没有遇到过这个?
谢谢你。