【问题标题】:Mod_rewrite on WAMP 2.4WAMP 2.4 上的 Mod_rewrite
【发布时间】: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

【问题讨论】:

    标签: apache .htaccess mod-rewrite wamp


    【解决方案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 :stackoverflow.com/questions/9021425/…
    • 从您给我的链接运行 echo in_array('mod_rewrite', apache_get_modules()) 后,结果返回为 1。
    • 我感觉这可能与 Wamp 有关。我应用了这些更改,但仍然没有结果。
    • 谢谢,这为我指明了正确的方向。我必须使用AllowOverride All 才能让它工作。
    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 2011-08-28
    • 2015-08-31
    • 2016-04-05
    • 1970-01-01
    • 2016-05-09
    • 2016-01-19
    • 2010-11-04
    相关资源
    最近更新 更多