从一般UrlRewrite规则中排除脚本

时间:2010-03-23 15:26:31

标签: .htaccess url-rewriting isapi-rewrite

我遵循网站的重写规则:

RewriteEngine On

# Stop reading config files
RewriteCond %{REQUEST_FILENAME} .*/web.config$ [NC,OR]
RewriteCond %{REQUEST_FILENAME} .*/\.htaccess$ [NC]
RewriteRule ^(.+)$ - [F]

# Rewrite to url
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(/bilder_losning/|/bilder/|/gfx/|/js/|/css/|/doc/).*
RewriteRule ^(.+)$ index.cfm?smartLinkKey=%{REQUEST_URI} [L]

现在我必须从上面的规则中排除包含其最终查询字符串的脚本,以便我可以正常方式访问和执行它,此时整个URL被忽略并转发到索引页面。

我需要访问根目录中的shoplink.cfm脚本,它带有变量tduid和url(shoplink.cfm?tduid = 1& url =)

我尝试使用以下方法解决此问题:

# maybe?: 
RewriteRule !(^/shoplink.cfm [QSA]

但说实话,我没有太多关于urlrewriting的线索,也不知道我应该写什么。我只知道上面会产生一个很好的500错误。

我一直在浏览stackoverflow和其他同一主题的网站,但我看到的只是人们试图排除目录,而不是文件。在最糟糕的情况下,我可以将脚本添加到单独的目录中并从重写文件中排除目录,而不是因为脚本应该保留在根目录中。

刚试过:

RewriteRule ^/shoplink.cfm$ $0 [L]

但这也没有做任何事情。

任何可以帮助我解决这个问题的人?

提前致谢。

史蒂文埃塞尔 ColdFusion程序员

1 个答案:

答案 0 :(得分:0)

请尝试将以下行放在配置的顶部(在RewriteEngine启用后):

RewriteRule ^shoplink.cfm$ - [L]