1

我在我的 Windows 7 机器上安装了 WAMP v2.2,并启用了虚拟主机。

我已经为我的一个本地站点成功安装了 ExpressionEngine,并且一切正常,除非我尝试使用已批准的方法index.php从 URL中删除。如果不存在,我仍然会收到 404 错误,但页面在 URL 中显示正常。.htaccessindex.phpindex.php

我确保在 Apache 菜单中检查了重写模块:
在 Apache 菜单中检查了重写模块. 我在商业主机上成功使用过这种方法几十次,难住了。

pvledoux 更新:

<IfModule mod_rewrite.c>
  RewriteEngine On

  # Removes index.php
  RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php/$1 [L]

  # If 404s, "No Input File" or every URL returns the same thing
  # make it /index.php?/$1 above (add the question mark)
</IfModule>

注意:我尝试将其添加?到规则中,但没有奏效。

该站点位于虚拟主机的根目录。

4

5 回答 5

2

知道了!

我需要在 httpd-vhosts.conf 中添加 AllowOverride:

<Directory "C:\Site\Root\Path">
    AllowOverride All
    Order Deny,Allow  
    Allow from all
</Directory>

万分感谢和 6 包啤酒送给 @parhamr 帮助我摆脱这个泡菜。

于 2012-08-10T17:53:39.173 回答
1

您可以在这里尝试一些可能性:

[...]
RewriteEngine On
Options FollowSymLinks
[...]

或者:

[...]
RewriteEngine On
Options +MultiViews
[...]

或者:

[...]
RewriteEngine On
Options FollowSymLinks
Options +MultiViews
[...]

根据我的经验,Apache 在 Windows 上运行时通常需要其中一个或两个才能正确执行此类操作。它也可能对你直接增加 500,但这些在过去对我有用。

于 2012-07-05T17:36:49.363 回答
1

尝试添加 RewriteBase /

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase / 

  # Removes index.php
  RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php/$1 [L]

  # If 404s, "No Input File" or every URL returns the same thing
  # make it /index.php?/$1 above (add the question mark)
</IfModule>

并确保 mod_rewrite 在 phpinfo 中处于活动状态

于 2012-07-05T17:22:46.793 回答
0

您是否检查过 Apache 中的默认文档?如果您从机器上物理删除 index.php 并且它仅在一个目录 www.domain.com/home/ 上报告 404,这意味着 Apache 仍在寻找 index.php。

于 2012-06-07T19:26:08.833 回答
0

Apache 中是否打开了 mod_rewrite ?

于 2012-07-05T17:20:22.707 回答