如果我使用htaccess代码:
RewriteRule ^test/(.*)/?$ /taxis/index.php?location=$1 [L,QSA,NC,R]
并导航到链接:
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/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
你知道我如何调整这个来给我:
答案 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]