【问题标题】:htaccess rewrite working offline on WAMP but not online on linux hosthtaccess rewrite 在 WAMP 上离线工作,但在 linux 主机上不在线
【发布时间】:2012-06-07 13:17:37
【问题描述】:

我只是在这里解释我的问题:

http://mysite.com/movie/20000

应该改写成

http://mysite.com/movie.php?id=20000

我的 htaccess 文件:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie/([0-9]+)$ movie.php?id=$1

在我的本地 WAMP 安装上,这工作正常,但是当我将它放在我的 linux 主机上时,它并不能完全工作。它确实转到了 movie.php 页面,但似乎没有给出 GET 参数 id。

编辑:

如果我使用

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie([0-9]+)$ movie.php?id=$1

然后

http://mysite.com/movie20000

转到正确的页面,但我想要/movie/20000 而不仅仅是/movie20000

我的主机似乎也自动将对mysite.com/movie的访问重写为mysite.com/movie.php

【问题讨论】:

  • 尝试通过在配置文件中添加:RewriteLog "/var/log/apache2/rewrite.log" 和下一行 RewriteLogLevel 3 来获取更多信息。

标签: linux .htaccess rewrite wamp


【解决方案1】:

找了半天,拔了几根可爱的头发,终于找到了解决办法。

我刚刚加了

Options -MultiViews

到我的 htaccess 文件并修复它。

为什么?因为 .php 被添加到没有扩展名的 url 中,我真的不需要。

【讨论】:

  • 在拔掉 我的 可爱的头发 3 小时后,我找到了您的帖子。非常感谢!!
【解决方案2】:

这应该可行。

RewriteRule ^movie/([0-9]+)$ http://mysite.com/movie.php?id=$1 [NC,L]

不要忘记 [NC, L] 这意味着不区分大小写,最后一条规则...如果不这样做,它将继续处理您的 htaccess 规则,可能会触发其他规则。

不过,下面的内容还是不错的建议.... :)

检查 Rewrite 模块是否与 apache 一起加载。在 httpd.conf 文件中查找这一行:

LoadModule rewrite_module modules/mod_rewrite.so

检查您的 apache 配置是否允许您的系统或虚拟主机定义中的 .htaccess 文件。

另外,使用更简单的重写 catch all 进行测试并单独测试以查看它是否完全像这样工作(删除 htaccess 文件中的所有其他内容以限制测试):

RewriteEngine On
RewriteRule ^(.*)$ http://www.google.com [L,R=301]

如果 apache 的配置设置正确,对您网站的任何请求都应该转到 google。

【讨论】:

  • 一切正常,我用一些额外的信息更新了我的问题。
  • 您确定 $0 吗?似乎不起作用,而过去 1 美元就做到了。我问过我的主人这个问题,也许他们以前也有同样的问题。
  • @gl3nn 我的,糟糕...用户重定向中的完整 URL 和 $1... 应该可以工作。请参阅上面的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 2019-07-03
  • 2018-03-04
  • 2021-06-11
  • 1970-01-01
  • 2018-12-08
  • 2012-03-26
相关资源
最近更新 更多