.htaccess路由,文件检查不使用查询字符串

时间:2013-05-16 10:45:15

标签: .htaccess mod-rewrite url-rewriting

我当然不是.htaccess文件的专家,所以忍受我..

我有一个很好的简单规则:

RewriteCond %{DOCUMENT_ROOT}/landing-pages/$1.aspx -f
RewriteRule ^/(.[^/]*)/?$ /landing-pages/$1.aspx [NC,L,QSA]

所以如果我去一页:

http://myexampledomain.com/my-landing/page/

它被正确地重写为:

http://myexampledomain.com/landing-pages/my-landing-page.aspx

这很好,直到原始网址上有查询字符串:

http://myexampledomain.com/my-landing/page/?foo=bar

此时,不符合重写条件(我假设查询字符串是$ 1的一部分?),因此我找不到页面。

我已经尝试将我的病情改为:

RewriteCond /landing-pages/%{REQUEST_URI}.aspx -f

但是,我怀疑%{REQUEST_URI}包含前导和尾部斜杠,因此也不起作用。

有没有人对如何让条件忽略查询字符串有任何想法,但仍然在规则中追加查询字符串?

任何帮助表示感谢。

P.S。我知道路由在.net 3.5+中可用,但目前这不是一个选项,我们已经通过Helicon的asapi_rewrite模块使用了.htaccess。

由于

编辑:

我已经添加了另一个条件和规则来尝试缩小问题的位置:

RewriteCond %{QUERY_STRING} foo=bar 
RewriteRule ^/(.*)/?$ /landing-pages/$1.aspx? [NC,L,QSA]

所以现在如果查询字符串foo = bar存在,则设置为具体重写。使用这个我可以看到Rewrite之后请求的URL是:

http://myexampledomain.com/landing-pages/my-landing-page/?foo=bar.aspx?foo=bar

这肯定不是我预期的表现方式..

0 个答案:

没有答案