2017-06-15 59 views
1

我在URL重写时遇到了一些问题。htaccess规则在一种情况下失败

我写的规则没有基本密钥象下面这样: -

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但这不应该工作因为没有在这里提出或这应该是N =视频

请检查并引导我。

在此先感谢。

回答

1

你必须在你刚开始添加RewriteBase htaccess的像下面

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] 
+0

我已经加在 RewriteBase /网站选项+的FollowSymLinks RewriteEngine叙述 / 选项-Indexes –

+0

请了解你自己的规则。 http:// localhost/site/en/video/ca /​​ key肯定会匹配 'RewriteRule ^([\ w - ] +)/([\ w - =] +)/([\ w- = [+] +)/([\ w - =] +)$ landing.php?n = $ 1&p = $ 2&c = $ 3&k = $ 4 [QSA,L]'因为它有4个匹配组。看到这些是4个匹配1 = en,2 =视频,3 = ca,4 =键。所以你的网址是'http://localhost/site/landing.php?n = en&p = video&c = ca&k = key 由于你的RewriteRule选项中的L,测试会停止。 。 –

+0

是的,这是个问题。我该如何解决这个问题? –

相关问题