我有以下网站的重写规则:
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]
但这也没有任何作用。
谁能在这个问题上帮助我?
提前致谢。
Steven Esser ColdFusion 程序员