.htaccess文件在Ubuntu服务器上被忽略

时间:2014-09-05 18:37:41

标签: .htaccess ubuntu

我最近搬到了我的网站的新服务器,我成功激活了mod_rewrite,但有些文件仍无法正常工作!

喜欢这个:

RewriteRule ^activate\/(.*)\/(.*)$  activate.php?Email=$1&hash=$2

我已经对我的VPS(Ubuntu)进行了所有必要的更改!

有什么想法吗?

就像这条线路运作良好:

RewriteRule ^search\/(.*)\/([a-zA-Z0-9_-]+)$  search.php?view=$1&p=$2
RewriteRule ^search$  searchResults.php
RewriteRule ^term$  term.php
RewriteRule ^faq$  faq.php
# Non-working line...
RewriteRule ^activate\/(.*)\/(.*)$  activate.php?Email=$1&hash=$2

请注意,mod_rewrite已启用且所有其他行仅适用于此一行!

1 个答案:

答案 0 :(得分:1)

首先,您必须定义RewriteBase,因为您创建了两个虚拟目录的两个规则(第一个和最后一个)。

然后,您应该停用MultiViews选项,以使termfaq规则正常运行。

最后,您可以以更通用的方式重写模式(或者至少以更好的方式,更精确地重写)。另外,请不要忘记每个规则后的L标记([L]),否则 mod_rewrite 会继续评估下一个规则。

您可以通过此替换htaccess中的当前代码(假设您的htaccess位于根文件夹中)

Options -MultiViews

RewriteEngine On
RewriteBase /

RewriteRule ^search/([^/]+)/([^/]+)$ search.php?view=$1&p=$2 [L]
RewriteRule ^search$ searchResults.php [L]
RewriteRule ^term$ term.php [L]
RewriteRule ^faq$ faq.php [L]
RewriteRule ^activate/([^/]+)/([^/]+)$ activate.php?Email=$1&hash=$2 [L]