我最近搬到了我的网站的新服务器,我成功激活了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已启用且所有其他行仅适用于此一行!
答案 0 :(得分:1)
首先,您必须定义RewriteBase
,因为您创建了两个虚拟目录的两个规则(第一个和最后一个)。
然后,您应该停用MultiViews
选项,以使term
或faq
规则正常运行。
最后,您可以以更通用的方式重写模式(或者至少以更好的方式,更精确地重写)。另外,请不要忘记每个规则后的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]