Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 .htaccess规则无法限制对无限参数的url重写_Php_.htaccess_Url Rewriting - Fatal编程技术网

Php .htaccess规则无法限制对无限参数的url重写

Php .htaccess规则无法限制对无限参数的url重写,php,.htaccess,url-rewriting,Php,.htaccess,Url Rewriting,我在基于php的项目中使用.htaccess文件重写url。我已经写了一些规则来相应地重写url。然而,我在为log-in.php编写url时遇到了4个不同的问题。我目前的规则如下: RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #Home Pages rule# RewriteRule ^home index.php [L] RewriteRule ^contac

我在基于php的项目中使用.htaccess文件重写url。我已经写了一些规则来相应地重写url。然而,我在为log-in.php编写url时遇到了4个不同的问题。我目前的规则如下:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#Home Pages rule#
RewriteRule ^home index.php [L]
RewriteRule ^contact-support contact-support.php [L]

#Login Rule#
RewriteRule ^login log-in.php [L]
RewriteRule ^login/([0-9]+)$ log-in.php?temporaryBookingId=$1 [L]
RewriteRule ^login/([0-9]+)/([0-9]+)$ log-in.php?temporaryBookingId=$1&jSessionId=$2 [L]
RewriteRule ^login/([0-9]+)/([0-9]+)/([a-zA-Z]+)$ log-in.php?temporaryBookingId=$1&jSessionId=$2&name=$3 [L]
对于当前规则,案例如下 1.当url中没有参数时,默认情况下它应该打开登录页面。 2.当存在参数时,填写登录凭证后的登录页面应相应重定向。 3.当url中的参数超过所需限制时,它必须显示页面404未找到页面

这里出现的瓶颈是,我已经编写了一条规则,只允许参数化URL最多为2个,即临时BookingId&jSessionId&name。url的工作方式如下

http://example.com/login/1234/1234/sagar
但是当我在这里添加更多的参数时

http://example.com/login/1234/1234/sagar/1234/1234

它应该向我显示
404未找到错误页面
,但它正在再次打开同一页面。在这里,如果我对rule
RewriteRule^login log-in.php[L]
进行注释,则上述条件起作用并显示错误页面,但如果我打开简单登录页面,它会将我导航回404未找到错误页面。如何编写log-in.php页面的规则以满足所有条件?

这就是您在.htaccess文件中的“登录规则”吗?我之所以这么问是因为在#Login Rule#中,第三个重写规则遗漏了替换文件Login.php?的“?”,该文件用于将查询字符串与URL连接起来谢谢您的回复。让我告诉你,从#登录规则#我已经根据我的要求编写了规则。第一条规则是在我打开log-in.php页面时应用的,地址中没有任何参数。barYa我得到了你的观点。实际上,当我复制并在编辑部分设置它时,它被错误地删除了。我已经更正了,为什么不试试这个,注释除此之外的所有其他重写规则^login log-in.php[L]for#login Rule#。现在,传递url参数like并检查url是否重定向到原始文件如果它工作,则表明您的重写规则没有相应地工作。RewriteRule^login log-in.php[L]中缺少模式的“$”结尾。添加它,然后尝试这是否就是您在.htaccess文件中的“登录规则”?我之所以这么问是因为在#Login Rule#中,第三个重写规则遗漏了替换文件Login.php?的“?”,该文件用于将查询字符串与URL连接起来谢谢您的回复。让我告诉你,从#登录规则#我已经根据我的要求编写了规则。第一条规则是在我打开log-in.php页面时应用的,地址中没有任何参数。barYa我得到了你的观点。实际上,当我复制并在编辑部分设置它时,它被错误地删除了。我已经更正了,为什么不试试这个,注释除此之外的所有其他重写规则^login log-in.php[L]for#login Rule#。现在,传递url参数like并检查url是否重定向到原始文件如果它工作,则表明您的重写规则没有相应地工作。RewriteRule^login log-in.php[L]中缺少模式的“$”结尾。添加它并尝试