【问题标题】:.htaccess RewriteRule on apache not workingapache上的.htaccess RewriteRule不起作用
【发布时间】:2015-08-16 12:38:53
【问题描述】:

我什么都试过了。以下 .htaccess 文件似乎在我的本地 XAMPP 服务器上产生了奇迹:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule pilot/([^/]*)$ /pilot.php?name=$1
</IfModule>

但遗憾的是,当我将它上传到我的网络主机时,它不起作用。任何帮助或意见将不胜感激。

编辑:我忘了补充说它确实正确地重定向到文件,但由于某种奇怪的原因没有抓取该变量。我也试过这个:

RewriteRule ^pilot/(.*)$ /pilot.php?name=$1

但它也不起作用。我完全迷路了。我的网络主机是 OVH。

EDIT2:我至少能够稍微缩小问题的范围。我发现这样做:(注意 - 而不是 /)

RewriteRule ^pilot-(.*)$ pilot.php?name=$1

工作得很好。斜线有问题,但我想不出办法来解决它。

EDIT3:好吧,显然

重写规则 ^character/([a-zA-Z_]+)$ show.php?name=$1 [L]

有效但

重写规则 ^pilot/([a-zA-Z_]+)$ show.php?name=$1 [L]

没有。哦,好吧..

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    尝试将其添加到您的 htaccess 中:

    Options -MultiViews
    

    MultiViews 的效果如下:如果服务器收到对 /some/dir/foo 的请求,如果 /some/dir 启用了 MultiViews,并且 /some/dir/foo 不存在,则服务器读取目录查找名为 foo.* 的文件,并有效地伪造了一个类型映射,该类型映射为所有这些文件命名,为它们分配相同的媒体类型和内容编码,如果客户端按名称要求其中之一。然后它选择最符合客户要求的匹配项。 http://httpd.apache.org/docs/2.2/en/content-negotiation.html

    然后与:

    RewriteRule pilot/([^/]*)$ /pilot.php?name=$1
    

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 2022-01-23
      • 1970-01-01
      • 2014-09-03
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多