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 不工作的主要内容,如果未能解决你的问题,请参考以下文章