2009-10-24 40 views
0

一个非常容易的,但我需要得到这个权利,并且我不能承受错误,因为我需要尽快部署在实时服务器上。ISAPI重写规则帮助(http://www.foo.com/bar - > http://www.foo.com/bar.aspx)

http://www.foo.com/bar --> http://www.foo.com/bar.aspx 
http://www.foo.com/bar?q=boo --> http://www.foo.com/bar.aspx?q=boo 

# I only want /bar to get rewritten to /bar.aspx 
# everything else stays as is 
http://www.foo.com/bar.aspx --> http://www.foo.com/bar.aspx 
http://www.foo.com/bar.pdf --> http://www.foo.com/bar.pdf 

我来到这里,但是这原来bar.aspxbar.aspx.aspx,这是不好的。

# Helicon ISAPI_Rewrite configuration file 

RewriteEngine on 
RewriteRule (.*) $1.aspx [L] 

回答

2

试试这个规则:

RewriteCond $1 !.*\.aspx$ 
RewriteRule (.*) $1.aspx [L] 

这应该避免使用递归任何可能出现的问题。如果你想排除已经存在的文件,试试这个条件来代替:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) $1.aspx [L] 
+0

太棒了!这是什么在英语中说:“RewriteCond $ 1!。* \。aspx $” – inspite 2009-10-24 19:44:49

+1

@DrG:'$ 1'就像在替换表达式中的'RewriteRule'模式的第一组匹配。然后,对照'!。* \。aspx $'模式进行测试,该模式简单地反转了'。* \。aspx $'的结果。所以如果当前的URL路径是'/ bar.aspx','$ 1'是'bar.aspx',然后用'。* \。aspx $'匹配,所以'RewriteCond'的结果是* false * '。* \。aspx $'被否定。这意味着该规则不会应用于'/ bar.aspx',因为它以'.aspx'结尾。 – Gumbo 2009-10-24 19:51:43

+0

'foo.com/bar.pdf'会发生什么情况。我希望这也能一个人留下。也许我真的需要你的第二条规则。它开始沉入水中!我觉得我可能需要两者的结合。感谢您的帮助Gumbo,我比以前有更好的基础:D – inspite 2009-10-24 20:16:14