XAMPP .htaccess mod_rewrite 不工作

Posted

技术标签:

【中文标题】XAMPP .htaccess mod_rewrite 不工作【英文标题】:XAMPP .htaccess mod_rewrite not working 【发布时间】:2015-12-02 08:51:04 【问题描述】:

我正在为 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 错误消息。

【问题讨论】:

你得到的是 401 还是 404? 好吧,我不确定发生了什么。早些时候我收到关于“服务器配置错误:找不到页面”的消息,现在它正在将我重定向到http://localhost/dashboard/(欢迎使用 XAMPP)。 /johndoe.com/index.php 文件有效吗? 这通常有点反复试验......我要做的是从小处着手,将 .htaccess 和 index.php 放在根目录中,reomve RewriteBase 并查看是否有然后进行重写。确定文件是否被确认的一个好方法是在其中放置一个有意的语法错误 (RewriteBrase) 并查看它是否引发 500 错误。测试重写规则是否有效的一个好方法是将外部站点指定为目标 (RewriteRule ^about/?$ http://example.com)。还要将 ?menu1=about 替换为 index.php 文件的全名。祝你好运! 谢谢。我不知道出了什么问题,但它现在正在工作:没有修改 C:\xampp\apache\conf\httpd.conf,没有 RewriteBase 指令,.htaccess 在 www.johndoe.com 内,并且以下工作:RewriteEngine on,@987654341 @(上面目录中没有.htaccess文件)。 【参考方案1】:

事实证明,使用默认 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

【讨论】:

lifesaver 奖颁给了!

以上是关于XAMPP .htaccess mod_rewrite 不工作的主要内容,如果未能解决你的问题,请参考以下文章

xampp 上 .htaccess 文件的奇怪行为

XAMPP 本地服务器上的 Htaccess 用于测试

将网站导入 xampp:htaccess 更改

将网站导入 xampp:htaccess 更改

.htaccess 在 xampp 和 Ubuntu 下不起作用

.htaccess 无法使用 XAMPP 在本地主机上工作