在Windows 7上,Apache 2.2的mod_rewrite无法工作

3

我已经在我的Windows 7机器上安装并运行了WampServer,它被安装在C:/wamp目录下。我使用以下VirtualHosts在C:/wamp/bin/apache/Apache2.2.1.7/conf/extras/httpd-vhosts中设置了我的配置。

NameVirtualHost *:80

<VirtualHost *:80>
                ServerName localhost
                ServerAlias localhost
                DocumentRoot "C:/wamp/www"
                <Directory "C:/wamp/www">
                                Options Indexes Includes FollowSymLinks ExecCGI MultiViews
                                AllowOverride all
                                Order Allow,Deny
                                Allow from all
                </Directory>
</VirtualHost>


<VirtualHost *:80>
                DocumentRoot "C:/wamp/www/DevelopmentServer/clickslide/webroot"
                ServerName clickslide.loc
                <Directory "C:/wamp/www/DevelopmentServer/clickslide/webroot">
                                Options Indexes Includes FollowSymLinks ExecCGI MultiViews
                                AllowOverride all
                                Order Allow,Deny
                                Allow from all
                </Directory>
                DirectoryIndex     index.html index.php
    AccessFileName     .htaccess
                AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3
</VirtualHost>

我的服务器正常启动和关闭,并可以正常提供HTML文件和PHP文件,但它忽略了我的.htaccess指令。我在我的Macintosh上使用MAMP和Apache进行设置,htaccess可以正常工作。我想在Windows上可能有一些显而易见的东西我没注意到。

以下是我的.htaccess内容:

RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

我甚至尝试添加一些无关紧要的内容,但这并不会导致服务器错误,因此我知道htaccess文件未被读取。

以下是我的配置文件:

ServerRoot "c:/wamp/bin/apache/apache2.2.17"


Listen 80


LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule charset_lite_module modules/mod_charset_lite.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule dav_lock_module modules/mod_dav_lock.so
#LoadModule dbd_module modules/mod_dbd.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule dumpio_module modules/mod_dumpio.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule filter_module modules/mod_filter.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule ident_module modules/mod_ident.so
#LoadModule imagemap_module modules/mod_imagemap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule logio_module modules/mod_logio.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule status_module modules/mod_status.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule php5_module "c:/wamp/bin/php/php5.3.5/php5apache2_2.dll"

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon

</IfModule>
</IfModule>


ServerAdmin admin@localhost

ServerName localhost:80

DocumentRoot "c:/wamp/www/"

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory "c:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
#   onlineoffline tag - don't remove
    Order Allow,Deny
    Allow from all
</Directory>

<IfModule dir_module>
    DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

ErrorLog "c:/wamp/logs/apache_error.log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    CustomLog "c:/wamp/logs/access.log" common
</IfModule>

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "cgi-bin/"
</IfModule>


<Directory "cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

DefaultType text/plain

<IfModule mime_module>
    TypesConfig conf/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3
</IfModule>


Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-vhosts.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include "c:/wamp/alias/*"
2个回答

20

在 Apache 的配置中,将 DocumentRoot 定义中的 "AllowOverride" 更改为 "All" 将解决该问题。


1

请仔细检查 .htaccess 文件的名称。Windows 不允许您在句点之前创建一个没有任何内容的文件。"您必须输入文件名"。

有两个选项。

  • 更改 AccessFileName 以使用不同的文件名。
  • 使用命令行执行 "rename htaccess .htaccess" 命令将起作用。

我正在显示隐藏文件,它的名称是".htaccess",同时我在我的Apache httpd配置文件中设置了"AccessFileName .htaccess"指令...? - Aaron Franco
phpinfo() 函数显示模块已加载,wamp 面板显示插件已启用。 - Aaron Franco
. 开头的文件在 Linux 操作系统中是隐藏文件,由于 Apache 最初是为 Linux 开发的,因此 Apache 保留了这个约定。当在 Linux 计算机上浏览网络共享时,Windows 7 似乎没有任何问题处理 . 文件。 - Dirk Hartzer Waldeck
@DirkHartzerWaldeck 浏览网络共享,是的,它可以工作,但他的问题不是关于网络共享的。您无法使用Windows文件资源管理器将文件重命名为以句点开头的名称。您可以使用命令提示符来完成此操作。不过,这似乎不是问题所在,因为他表示他的文件已经被正确命名了。 - AndrewR
@AndrewR,我想告诉你,只有在创建文件时,.文件才会成为Windows资源管理器的问题。即使在Windows系统上,使用以.开头的文件也不会对Apache造成任何问题。 - Dirk Hartzer Waldeck
@DirkHartzerWaldeck 我们达成了一致。 - AndrewR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接