WAMP mod_rewrite RewriteRule无效

时间:2013-03-19 00:18:30

标签: .htaccess mod-rewrite wamp wampserver file-extension

我正在尝试在我的本地wamp服务器上使用adaptive images。 ai-cache文件夹未显示,图像根本没有被替换。根据{{​​3}}我在.htaccess文件中尝试RewriteRule .(?:jpe?g|gif|png)$ test.jpg并在同一文件夹中添加test.jpg,但这不会改变任何内容。

在wamp菜单中选择Apache-> Apache Modules-> rewrite_module,并在httpd.conf LoadModule rewrite_module modules/mod_rewrite.so中取消注释

每当我更改.htaccess时,我都会重新启动wamp中的所有服务。此外,如果我在顶部写asdf,它确实会给出500内部服务器错误,因此我知道正在读取该文件。

我做错了什么?

这是位于几个子目录中的.htaccess文件(www / demos / test /):

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  # Adaptive-Images -----------------------------------------------------------------------------------

  # Add any directories you wish to omit from the Adaptive-Images process on a new line, as follows:
  # RewriteCond %{REQUEST_URI} !ignore-this-directory
  # RewriteCond %{REQUEST_URI} !and-ignore-this-directory-too

  RewriteCond %{REQUEST_URI} !assets

  # don't apply the AI behaviour to images inside AI's cache folder:
  RewriteCond %{REQUEST_URI} !ai-cache

  # Send any GIF, JPG, or PNG request that IS NOT stored inside one of the above directories
  # to adaptive-images.php so we can select appropriately sized versions

  RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php

  # END Adaptive-Images -------------------------------------------------------------------------------
</IfModule>

这是我的httpd.conf部分:

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "c:/wamp/www/">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options None

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride all

    #
    # Controls who can get stuff from this server.
    #

#   onlineoffline tag - don't remove
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1:

</Directory>

1 个答案:

答案 0 :(得分:1)

好吧,我弄明白为什么它不起作用!这根本不是WAMP / localhost问题。

由于某种原因,自适应图像附带的默认.htacess文件对于每种情况都不能开箱即用。但是......我必须在重写规则的末尾添加[NC,L]。 html和image标签的.jpg扩展名为小写,但我的图像文件是用大写字母(.JPG)编写的,直到我在文件浏览器中打开文件扩展名时才注意到这一点。

  • nocase | NC:使模式比较不区分大小写。
  • last | L:立即停止重写过程,不要应用任何重写过程 更多规则。特别注意每个目录和.htaccess的注意事项 上下文(另见END标志)。

Source

以下是最终代码:

<IfModule mod_rewrite.c>
  Options +FollowSymlinks
  RewriteEngine On

  # Adaptive-Images -----------------------------------------------------------------------------------

  # Add any directories you wish to omit from the Adaptive-Images process on a new line, as follows:
  # RewriteCond %{REQUEST_URI} !ignore-this-directory
  # RewriteCond %{REQUEST_URI} !and-ignore-this-directory-too

  RewriteCond %{REQUEST_URI} !assets

  # don't apply the AI behaviour to images inside AI's cache folder:
  RewriteCond %{REQUEST_URI} !ai-cache

  # Send any GIF, JPG, or PNG request that IS NOT stored inside one of the above directories
  # to adaptive-images.php so we can select appropriately sized versions

  RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php [NC,L]

  # END Adaptive-Images -------------------------------------------------------------------------------
</IfModule>