WAMP 2.4 上的 Mod_rewrite

Posted

技术标签:

【中文标题】WAMP 2.4 上的 Mod_rewrite【英文标题】:Mod_rewrite on WAMP 2.4 【发布时间】:2014-02-04 18:48:09 【问题描述】:

我有 wampserver 2.4,但我似乎无法让 Mod_Rewrite 对其进行处理。我在 Apache 服务中启用了它,并在 httpd.conf 中取消了 mod_rewrite.so 的注释并重新启动了服务器。我还检查了我的 phpinfo(),它在服务下列出了 mod_rewrite。

我正在测试它的站点位于地址 localhost/eb/index.php 后面我试图在 event.php 页面上测试它,其中 url 看起来像 localhost/eb/event.php?id=1

这就是我的 .htaccess 文件在我的 index.php 文件所在的 localhost/eb 根目录中的样子。

<IfModule mod_rewrite.so>
RewriteEngine on
RewriteBase /eb/
RewriteRule ^event/([0-9]+)/?$event.php?id=$1
</IfModule>

即使在此之后它仍然显示 url localhost/eb/event.php?id=1

【问题讨论】:

【参考方案1】:

您还需要额外的外部重定向。保持你的 .htaccess 像这样:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /eb/

RewriteCond %THE_REQUEST /event\.php\?id=([^\s&]+) [NC]
RewriteRule ^ event/%1? [R=301,L]

RewriteRule ^event/([0-9]+)/?$ event.php?id=$1 [L,QSA]

【讨论】:

成功了!能否请您解释一下为什么有这么多规则?我读过的所有教程都只显示了使用 OP 中的重写规则。另外,我现在需要做什么才能让我的 CSS 脚本在已重写的页面上工作?这是一个动态页面,因此 css 调用位于 header.php 中,并且该文件包含在其他页面文件中 对于 css/js 问题,在您的 css、js、图像文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以http:// 或斜杠/ 开头。或者您可以尝试在页面标题中添加此内容:&lt;base href="/" /&gt; 这里需要2条规则。规则 1:将实际的 /eb/event.php?id=123 重定向到 /eb/event/123 和第二条规则,将 /eb/event/123 URI 内部重写为实际的 /eb/event.php?id=123【参考方案2】:

在文档根目录而不是 /eb/ 目录上添加 RewriteBase /eb/,并将所有重写添加到 /eb/ 目录。

更新

在你的 http.conf 上

<Directory *>            
   # changed from None to FileInfo
   AllowOverride FileInfo          
</Directory>

【讨论】:

所以在我的 www 根文件夹下,我添加了一个带有 RewriteEngine On RewriteBase /eb/ 的 .htaccess 文件,然后在 eb 文件夹下,我的 .htaccess 文件包含了所有内容它作为 OP,但不包括 RewriteBase。在这些更改之后,mod_rewrite 仍然无法正常工作:-/ @ConnerBurnett 请使用以下解决方案检查 mod_rewrite :***.com/questions/9021425/… 从您给我的链接运行 echo in_array('mod_rewrite', apache_get_modules()) 后,结果返回为 1。 我感觉这可能与 Wamp 有关。我应用了这些更改,但仍然没有结果。 谢谢,这为我指明了正确的方向。我必须使用AllowOverride All 才能让它工作。

以上是关于WAMP 2.4 上的 Mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

Flex AMFPHP 站点在 WAMP 2.2 中工作,但在 WAMP 2.4 中失败

限制对 Apache 2.4 虚拟主机 (WAMP) 的访问

Wampserver登录失败mysql windows 7

wamp经典安装

重新安装 WAMP 后,一些数据库内容消失了

使用 xdebug 和 netbeans 调试 CakePHP 2.4 应用程序不起作用