htaccess RewriteRule问题

时间:2012-01-23 20:42:29

标签: apache .htaccess mod-rewrite

我是.htaccess的新手,我发现了一些文章,我试图让它发挥作用,但仍然失败。

我的.htaccess文件中有以下内容: -

<IfModule mod_ssl.c>
    RewriteBase /mydomain.com/
</IfModule>
<IfModule !mod_ssl.c>
    RewriteBase /
</IfModule>
RewriteEngine On
RewriteRule ^([^.]*)$ index.cgi/$1 [L]

但是,我希望能够访问 mydomain.com/more-info ,但这条规则是 mydomain.com/index.cgi/more-info

我怎样才能使“更多信息”免于此规则?

提前谢谢。


所以,Ulrich建议如下......

#if not /more-info
RewriteCond %{REQUEST_URI} !^/more-info$ [NC]
RewriteRule ^([^.]*)$ index.cgi/$1 [L]

......但我仍然得到'404 Not Found'。 more-info目录包含index.htm,如果我关闭这个RewriteEngine,它可以正常工作。

3 个答案:

答案 0 :(得分:0)

之前添加RewriteCond指令
RewriteRule ^([^.]*)$ index.cgi/$1 [L]

免除/更多信息。像 -

这样的东西
RewriteCond %{QUERY_STRING} != /more-info

您可以在这里找到一些示例 - &gt; http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond

答案 1 :(得分:0)

如下所示

#if not /more-info
RewriteCond %{REQUEST_URI} !^/more-info$ [NC]
RewriteRule ^([^.]*)$ index.cgi/$1 [L]

答案 2 :(得分:0)

您可以尝试以下规则:

RewriteRule ^((?!more-info)[^.]*)$ index.cgi/$1 [L,NC]