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

时间:2014-06-17 20:13:07

标签: .htaccess rewrite ubuntu-14.04 apache2.4

我一直试图在我的本地开发网站上找出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时,网址保持不变。 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代码是否真的存在问题,或者是否存在某种我缺少的配置?我知道有类似的问题,但到目前为止,我还没有找到一个既可理解又能解决我问题的方法。

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

之后没有数字

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

答案 1 :(得分:0)

您正在将传入 URI <{1}} 重写为 /users/1/(SEO形式为动态表单)。你的.htaccess看起来是正确的(我假设它在根目录中)。

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