IIRF URL重写强制www前缀:example.com - > www.example.com

时间:2009-09-29 21:55:57

标签: mod-rewrite url-rewriting iirf

我正在尝试在iirf中做一些非常简单的事情。

我希望所有缺少www的请求。添加前缀。

这是我的IsapiRewrite4.ini:

RewriteCond %{HTTP_HOST} ^example\.com$ [I]
RewriteRule ^(.*)$ www.example.com/$1 [R=301,L]

这是我的SampleUrls.txt:

example.com
example.com/grants
www.example.com
www.example.com/grants

我将文件放在与TestDriver.exe相同的目录中,然后运行testdriver -d。 所有测试都被忽略了:

NO ACTION 'example.com' ==> --

NO ACTION 'example.com/grants' ==> --

NO ACTION 'www. example.com' ==> --

NO ACTION 'www. example.com/grants' ==> --

谢谢,

阿什利

2 个答案:

答案 0 :(得分:1)

TestDriver是一个独立的工具,用于测试IIRF的重写规则。不幸的是,该工具是有限的,因为它无法有效地评估测试服务器变量的条件。基于控制台的独立应用程序中没有服务器变量。

Check the doc。这就是它所说的:

  

请注意:TestDriver.exe程序是一个有用的测试工具,但它不能也不能取代Web服务器上下文中的实际测试。 testdriver不在HTTP服务器的上下文中运行,因此不适用于HTTP Server变量。特别是,如果在使用TestDriver.exe测试的ini文件中使用RewriteCond,并且那些RewriteCond语句引用服务器变量(例如%{HTTP_URL}或%{HTTP_REFERER}),那些RewriteCond语句将不会在TestDriver中表现相同他们将在ISAPI中表现出来的方式。对这些条件的测试对于验证实际操作性能没有用。

答案 1 :(得分:0)

您需要为替换指定绝对URL。否则,您的www.example.com将被视为路径段。

RewriteCond %{HTTP_HOST} ^example\.com$ [I]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]