【问题标题】:htaccess and mod_rewrite redirect errorhtaccess 和 mod_rewrite 重定向错误
【发布时间】:2013-11-29 21:29:52
【问题描述】:

在 ubuntu 13.04 和 apache2 和 php 5.4 上我得到了 404 错误。 我的机器上启用了 mod 重写

我的 .htaccess 代码是这样的:

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

并且 dl.php 设置为仅回显变量:

<?php
print_r($_GET);
?>

当我去这个地址http://localhost/digidoc/dl/5时输出显示404错误

p.s.:digidoc文件夹和digidoc文件夹中包含的.htaccess文件在web服务器根目录

【问题讨论】:

    标签: php .htaccess mod-rewrite apache2


    【解决方案1】:

    改变

    RewriteRule ^/dl/([0-9]+)/$ dl.php?id=$1
    

    进入

    RewriteRule ^/digidoc/dl/([0-9]+)/?$ dl.php?id=$1
    

    注意 ?,所以最后一个斜杠是可选的。同时添加digidoc/,因为该规则适用于整个网址。

    【讨论】:

    • 我遇到了同样的错误:在此服务器上找不到请求的 URL /digidoc/dl/5。
    • 你要什么网址? http://localhost/dl/5http://localhost/digidoc/dl/5?
    • digidoc 文件夹中包含的 htaccess 文件,所以我调用 http://localhost/digidoc/dl/5,我必须将 .htaccess 保存在根文件夹中吗?
    • 不,没必要。但是您应该将 digdoc 添加到 RewriteRule。该规则适用于整个 url:RewriteRule ^/digidoc/dl/([0-9]+)/?$ dl.php?id=$1
    【解决方案2】:

    你需要去掉前面的斜线:

    Options -Multiviews
    
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /digidoc/
        RewriteRule ^dl/([0-9]+)$ dl.php?id=$1 [L,QSA]
    </IfModule>
    

    您还应该包括一个重写基础,并确保您关闭了多视图。

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 2012-07-13
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      相关资源
      最近更新 更多