.htaccess 重写失败,不确定如何排除故障

Posted

技术标签:

【中文标题】.htaccess 重写失败,不确定如何排除故障【英文标题】:Failing miserably with .htaccess rewrite, unsure how to troubleshoot 【发布时间】:2014-08-07 23:30:50 【问题描述】:

我整天都在尝试在本地开发站点上解决 URL 重写问题,但没有成功。最初忽略 .htaccess 文件。现在他们正在阅读但不工作。我不知道如何对 .htaccess 文件进行故障排除。根据我的阅读,Apache 2.4 似乎摆脱了指定您自己的 RewriteLog。我得到的唯一帮助是来自 /var/log/apache2/error.log 对我来说都是希腊语。

我正在尝试的重写很简单: local.domain.com/users/index.php?id=1 -> local.domain.com/users/1/

我的 .htaccess 看起来像:

RewriteEngine On
RewriteRule ^users/([0-9]+)/?$ users/index.php?id=$1 [NC,L]

当请求 local.domain.com/users/index.php?id=1 时,URL 保持不变。 apache 的 error.log 给出以下 3 行:

[Tue Jun 17 15:20:04.705939 2014] [rewrite:trace3] [pid 6569] mod_rewrite.c(468): [client 127.0.0.1:46208] 127.0.0.1 - - [local.domain.com/sid#b63f02c0][rid#b6b12058/initial] [perdir /var/www/vhosts/domain.com/] strip per-dir prefix: /var/www/vhosts/domain.com/users/index.php -> users/index.php
[Tue Jun 17 15:20:04.705979 2014] [rewrite:trace3] [pid 6569] mod_rewrite.c(468): [client 127.0.0.1:46208] 127.0.0.1 - - [local.domain.com/sid#b63f02c0][rid#b6b12058/initial] [perdir /var/www/vhosts/domain.com/] applying pattern '^users/([0-9]+)$' to uri 'users/index.php'
[Tue Jun 17 15:20:04.705990 2014] [rewrite:trace1] [pid 6569] mod_rewrite.c(468): [client 127.0.0.1:46208] 127.0.0.1 - - [local.domain.com/sid#b63f02c0][rid#b6b12058/initial] [perdir /var/www/vhosts/domain.com/] pass through /var/www/vhosts/domain.com/users/index.php

.htaccess 的位置是 /var/www/vhosts/domain.com/ 。有没有办法获得更好/更多的日志信息? /var/log/apache2/error.log 真的是我应该使用的日志吗?我的 .htaccess 代码真的有问题,还是我缺少某种配置?我知道有类似的问题,但到目前为止我还没有找到一个既可以理解又可以解决我的问题的问题。

提前致谢!

【问题讨论】:

您遇到了什么错误,您的 .htaccess 文件的位置是什么? 【参考方案1】:

您的正则表达式正在寻找[0+9]+,这意味着它正在寻找/users 之后的数字。在您的输入网址(假设这是您的输入网址)中,/var/www/vhosts/domain.com/users/index.php `'/users' 之后没有数字

/users/55555/ 这样的用户后面加上一个数字,看看会发生什么。

【讨论】:

【参考方案2】:

您正在重写传入 URI /users/1/ /users/index.php?id=1(SEO 形式到动态形式)。您的 .htaccess 看起来是正确的(我假设它在根目录中)。

您确定您的 Apache 服务器是在启用 RewriteEngine 的情况下构建的吗?您是否忽略了错误消息?您输入的 URI 是 /users/1/?

【讨论】:

奇怪。我知道我已经尝试过 /users/1/ 但没有奏效。显然,从那以后我改变了一些东西。我一直在输入查询字符串表单和更漂亮的表单,因为我不确定会发生什么。谢谢你们两个,虽然它现在可以工作了。

以上是关于.htaccess 重写失败,不确定如何排除故障的主要内容,如果未能解决你的问题,请参考以下文章

如何从重写器中排除特定文件

从htaccess重写中排除文件夹

从 HTACCESS 文件中的所有 ISAPI 重写 3 规则中排除目录

对 Cron 中的 PM2 重启进行故障排除

更新操作失败,SQLCODE=-803,如何排除故障?

htaccess 从 Basic Auth 中排除一个 url