XAMPP .htaccess mod_rewrite无效

时间:2015-09-06 20:11:37

标签: php apache .htaccess mod-rewrite xampp

我正在为Windows 5.6.11运行XAMPP。我有以下PHP文件:

C:\xampp\htdocs\www.johndoe.com\index.php

我正在访问

http://localhost/www.johndoe.com/

事实上,我需要访问以下页面:

http://localhost/www.johndoe.com/?value=about

作为以下两种之一:

http://localhost/www.johndoe.com/about/
http://localhost/www.johndoe.com/about

所以我在.htaccess文件中有以下内容:

RewriteEngine on
RewriteRule ^www\.johndoe\.com/about/?$ www.johndoe.com/?value=about

但是,这不起作用,因为访问以前的网站给了我401(未找到)。

以下是C:\xampp\apache\conf\httpd.conf中的内容:

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "C:/xampp/htdocs"
<Directory "C:/xampp/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    Require all granted
</Directory>

我该怎样做才能让我的.htaccess文件被解析并执行我之后的替换?

我已尝试将以下内容放入C:\xampp\apache\conf\httpd.conf

<Directory />
    AllowOverride all
    Require all allowed
</Directory>

但是没有运气。 我甚至尝试将.htaccess文件更改为以下内容:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteBase /www.johndoe.com/
RewriteRule ^about/?$ ?value=about

但我仍然收到404 not found错误消息。

1 个答案:

答案 0 :(得分:3)

事实证明,使用默认的XAMPP配置不需要C:\xampp\apache\conf\httpd.conf,因此不需要重新启动Apache,因为我们只是对C:\xampp\htdocs\www.johndoe.com\.htaccess进行了更改。正如this post on RewriteBase所述,我们不需要RewriteBase,因为我们不会在.htaccess规则的目标链接中使用绝对路径。由于这些目标规则中的相对链接将与我们提供的目录相关,因此我们需要从规则中删除www.johndoe.com目录,如下所示:

  • .htaccess放入``C:\ xampp \ htdocs \ www.johndoe.com`。
  • 将以下重新包含在其中:

    RewriteEngine on
    RewriteRule ^about/?$ index.php?value=about