【问题标题】:Htaccess rewrite error: Forward slashHtaccess 重写错误:正斜杠
【发布时间】:2014-04-30 05:53:33
【问题描述】:

我的 .htaccess 文件中有一个 RewriteRule 导致我出现问题。

重写规则格式

重写规则模式目标

当模式中有正斜杠 (/) 时会出现问题。似乎服务器将其解释为一个目录,因此目标是从该特定目录运行的(实际上并不存在)。这会导致服务器上出现 500 错误。

我的 .htaccess 代码如下:

RewriteRule ^store/women-shoes$ controller?controller=page&action=store&category=women-shoes

这会导致 500 错误。这是我在 apache 错误日志中得到的确切错误。

[2014 年 3 月 22 日星期六 15:12:58] [错误] [客户端 127.0.0.1] 请求超出 由于可能的配置,10 个内部重定向的限制 错误。使用 'LimitInternalRecursion' 来增加限制,如果 必要的。使用“LogLevel debug”获取回溯。

但是,如果我删除模式中的正斜杠,一切正常,因此它表明错误来自正斜杠。

RewriteRule ^store-women-shoes$ controller?controller=page&action=store&category=women-shoes

控制器文件与 .htaccess 文件在同一个目录中,并且必须保持这种状态。如何更新我的代码以保持相同的格式(在模式中使用正斜杠)但不触发此 500 错误。我需要告诉服务器:“嘿,这不是一个真正的目录,只是 url 的格式)

【问题讨论】:

  • 请不要打开重复的问题。你在一小时前刚问过同样的问题。
  • 显然你删除了另一个。老实说,将它删除并在一个小时后再次发布它并不能帮助您更快地回答您的问题。你必须要有耐心。现在您可以使用REQUEST_FILENAME 告诉它检查目录或文件是否不真实

标签: .htaccess mod-rewrite


【解决方案1】:

问题来自我的 htaccess 文件中的另一个规则,如下:

# No extension act like .php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 2014-09-13
    • 1970-01-01
    • 2014-10-22
    • 2017-08-09
    • 2015-01-27
    相关资源
    最近更新 更多