htaccess规则在一个条件下失败

时间:2017-06-15 11:28:57

标签: php apache .htaccess mod-rewrite

我在URL重写方面遇到了一些问题。

我写了一条没有基本密钥的规则,如下所示: -

RewriteRule ^en/([\w-]+)/([\w-=]+)/([\w-=]+)/([\w-=]+)$ landing.php?n=$1&p=$2&c=$3&k=$4 [QSA,L]

RewriteRule ^([\w-]+)/([\w-=]+)/([\w-=]+)/([\w-=]+)$ landing.php?n=$1&p=$2&c=$3&k=$4 [QSA,L]

我有以下网址: -

http://localhost/site/en/video/vi/ca/key //en URL
http://localhost/site/video/vi/ca/key   //normal URL

以上两个网址都运行良好。

但是在URL下面创建问题,这应该不起作用

http://localhost/site/en/video/ca/key 

网址,与普通网址一样。这是第二条规则。这里的第一条规则不起作用。 GET [' n']显示 n = en ,但不应该,因为此处不存在 vi ,或者这应该 n =视频

请检查并指导我。

提前致谢。

1 个答案:

答案 0 :(得分:2)

你必须在htaccess的最开头添加RewriteBase,如下所示

RewriteBase /site/

RewriteRule ^en/(([\w-]+)\/){1,4} landing.php?n=$1&p=$2&c=$3&k=$4 [QSA,L]

RewriteRule ^([\w-]+)/([\w-=]+)/([\w-=]+)/([\w-=]+)$ landing.php?n=$1&p=$2&c=$3&k=$4 [QSA,L]