htaccess规则有效,但不适用于同一目录

时间:2013-04-23 19:06:48

标签: .htaccess

如果我使用htaccess代码:

RewriteRule ^test/(.*)/?$ /taxis/index.php?location=$1 [L,QSA,NC,R]

并导航到链接:

http://test.co.uk/test/abcde

htaccess工作并将我转移到: http://test.co.uk/taxis/index.php?location=abcde

但是,我想更改重写规则,以便它适用于同一目录:

^taxis/(.*)/?$ /taxis/index.php?location=$1 [L,QSA,NC,R]

但是当我导航到链接时:

http://test.co.uk/taxis/abcde

该链接不起作用并产生:

http://test.co.uk/taxis/index.php?location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=index.php&location=abcde

你知道我如何调整这个来给我:

http://test.co.uk/taxis/index.php?location=abcde

1 个答案:

答案 0 :(得分:1)

您需要重写规则之前的条件告诉它如果URI已经指向资源则不重写,或者只是排除规则的目标。重写引擎不断循环遍历所有规则,直到URI停止更改。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^taxis/(.*)/?$ /taxis/index.php?location=$1 [L,QSA,NC,R]

含义:“如果请求不是现有文件,请求不是现有目录,请应用规则“

或排除规则的目标:

RewriteCond %{REQUEST_URI} !^/taxis/index\.php$
RewriteRule ^taxis/(.*)/?$ /taxis/index.php?location=$1 [L,QSA,NC,R]