Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改可选参数的访问权限_Php_Apache_.htaccess - Fatal编程技术网

Php 更改可选参数的访问权限

Php 更改可选参数的访问权限,php,apache,.htaccess,Php,Apache,.htaccess,我有一个htaccess重写规则,允许用斜杠传递3个参数。第三个参数是可选的。我现在试图改变它,得到第四个可选参数 RewriteRule ^.*$ - [NC,L] RewriteRule ^([^/]+)/([^/]+)/?(.*)$ index.php?1=$1&2=$2&3=$3&4=$4 [NC,QSA,L] ^^ 此代码无法识别第4个参数 RewriteRule ^.*$ - [NC,L] RewriteRule ^([^/]+)/([^/]+)/?(.*)

我有一个htaccess重写规则,允许用斜杠传递3个参数。第三个参数是可选的。我现在试图改变它,得到第四个可选参数

RewriteRule ^.*$ - [NC,L]
RewriteRule ^([^/]+)/([^/]+)/?(.*)$ index.php?1=$1&2=$2&3=$3&4=$4 [NC,QSA,L] ^^
此代码无法识别第4个参数

RewriteRule ^.*$ - [NC,L]
RewriteRule ^([^/]+)/([^/]+)/?(.*)$ index.php?1=$1&2=$2&3=$3&4=$4 [NC,QSA,L] ^^
所以我尝试了以下方法

RewriteRule ^.*$ - [NC,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?(.*)$ index.php?1=$1&2=$2&3=$3&4=$4 [NC,QSA,L] ^^
但这会添加一个必需的第四个参数,如果禁用该第四个参数,则该参数不起作用

有什么想法我可以改变这一点,只需要2个参数,第3和第4是可选的,但承认

任何帮助都将不胜感激,如果可能的话,请稍作解释

谢谢。

您可以使用:

RewriteRule ^([^/]+)/([^/]+)(?:/([^/]*)(?:/([^/]*))?)?/?$ index.php?1=$1&2=$2&3=$3&4=$4 [QSA,L]

与其制定一条复杂的规则,不如制定多条规则,并按特定性降序排列。你能举个例子吗?我不知道你花了多少时间?