.htaccess规则限制url重写无限参数不起作用

时间:2016-08-08 11:58:36

标签: php .htaccess url-rewriting

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

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.当网址中的参数超出所需限制时,它必须显示页面 404页面未找到

这里出现的瓶颈是我已经编写了规则,允许参数网址仅为2,即对于temporaryBookingId& jSessionId&名称。网址将像

一样工作
http://example.com/login/1234/1234/sagar

但是当我在这里添加更多参数时,如

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

它应该显示404 not found error page,但它会再次打开同一页面。如果我对规则RewriteRule ^login log-in.php [L]发表评论,那么以上条件适用于此显示错误页面,但如果我打开简单的登录页面,它会导航回到404找不到错误页面。如何写入log-in.php页面的规则以满足所有条件?

0 个答案:

没有答案