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