htaccess文件似乎为RewriteRule拾取'if contains'

时间:2016-09-14 09:47:40

标签: .htaccess

我们目前有一个.htaccess RewriteRule,它错误地(或规则不正确)重定向网址。

规则

RewriteRule ^holiday-ecards/?.*$ /appindex.php [L] 

所需的重定向是:

http://domain.com/holiday-ecards/
http://domain.com/holiday-ecards/1/
http://domain.com/holiday-ecards/1/2
http://domain.com/holiday-ecards/1/2/3

但是,它似乎也会重定向以下内容,这是不受欢迎的:

http://domain.com/holiday-ecards-business/

修改

/appindex.php

这是照顾应用程序路由并按预期工作。

2 个答案:

答案 0 :(得分:1)

您可以通过多种方式进行操作,其中一种方法是设置重写条件,以便不触及带有假日警示加连字符的URI,如下所示:

RewriteCond %{REQUEST_URI} !^/holiday-ecards-.*$
RewriteRule ^holiday-ecards/?.*$ /appindex.php [L]

不确定URI中包含holiday-ecards的变体有多少。

答案 1 :(得分:0)

RewriteRule ^holiday-ecards/?.*$ /appindex.php [L]

(请注意,这是内部重写,而不是重定向。)

以上RewriteRule 模式holiday-ecards可选后设置斜杠(因此它也匹配holiday-ecards-business)。但是,在应该重写的示例URL中,斜杠是必需的。所以,看起来你只需要强制它(?),例如:

RewriteRule ^holiday-ecards/ /appindex.php [L]

尾随模式.*$是多余的。