在图案填充重写条件下,我在将空参数作为url传递时遇到问题。
我的rewrite simple通过/获取所有参数splitter,并将它们作为php GET:传递
RewriteRule /?([A-Z.a-z0-9_-]*)/?([A-Z.a-z0-9_-]*)/?([A-Z.a-z0-9_-]*)/?([A-Z.a-z0-9_-]*)/?([A-Z.a-z0-9_-]*)/?([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1&option2=$2&option3=$3&option4=$4&option5=$5&option6=$6
但是当我尝试这个网址时:
---.com/fiction//204
我在php中得到了这些get参数(注意url中的双/
):
Array (
[option1] => fiction
[option2] => 204
[option3] =>
[option4] =>
[option5] =>
[option6] => )
但我想要
Array (
[option1] => fiction
[option2] =>
[option3] => 204
[option4] =>
[option5] =>
[option6] => )
我尝试向rexexp:(^$|[A-Z.a-z0-9_-]*)
添加一个空字符串,但这不起作用。。
知道吗?
这些空值必须从RewriteCond
中捕获,因为RewriteRule
将所有多个/
剥离为单个/
。
这应该对你有用:
RewriteCond %{REQUEST_URI} ^/(['w-]*)(?:/(['w-]*)(?:/(['w-]*)(?:/(['w-]*)(?:/(['w-]*)(?:/(['w-]*))?)?)?)?)?/?$
RewriteRule ^ index.php?option1=%1&option2=%2&option3=%3&option4=%4&option5=%5&option6=%6 [L,QSA]
此规则使第一个参数之后的每个参数都是可选的。
您可能需要这6条规则,而不是现有的
RewriteRule /([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1&option2=$2&option3=$3&option4=$4&option5=$5&option6=$6
RewriteRule /([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1&option2=$2&option3=$3&option4=$4&option5=$5
RewriteRule /([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1&option2=$2&option3=$3&option4=$4
RewriteRule /([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1&option2=$2&option3=$3
RewriteRule /([A-Z.a-z0-9_-]*)/([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1&option2=$2
RewriteRule /([A-Z.a-z0-9_-]*)/?$ index.php?option1=$1
RewriteRule /$ index.php
但我不确定具有多个连续斜杠的URL是否适用于所有浏览器&服务器,我认为这通常是个坏主意。