.htaccess无法正常工作 - 值未正确分配?

时间:2013-12-03 04:24:12

标签: apache .htaccess

我最近开始使用apache,而不是nginx,但我的.htaccess不起作用。这是我的.htaccess的一个例子:

RewriteRule ^activate2/(.*)/(.*)/(.*)$ /activate2?user=$1&code=$2&email=$3 [QSA,L]

当我访问pgcp.pingrglobe.com/activate2/param1/param2/param3时 - 它不起作用,当我访问它时,并分配像?user = param1& code = param2& email = param3这样的值

有关于此的任何想法吗?

谢谢。

当前.htaccess

ErrorDocument 404 https://www.pingrglobe.com/404.html

DirectoryIndex index.html index.php
Options -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^blog/blogpost/(.+)$ /blog/blogpost?post=$1 [QSA,L]
RewriteRule ^viewticket/(.+)/(.*)$ /viewticket?tid=$1&$2 [QSA,L]
RewriteRule ^vemail/(.+)$ /vemail?eid=$1 [QSA,L]
RewriteRule ^serversettings/(.+)$ /serversettings?srvid=$1 [QSA,L]
RewriteRule ^notification/(.+)$ /notification?id=$1 [QSA,L]
RewriteRule ^viewreport/(.+)$ /viewreport?srvid=$1 [QSA,L]
RewriteRule ^removeserver/(.+)$ /removeserver?srvid=$1 [QSA,L]
RewriteRule ^staffviewticket/(.+)/(.*)$ /staffviewticket?tid=$1&$2 [QSA,L]
RewriteRule ^activate/(.*)/(.*)/(.*)$ /activate?user=$1&code=$2&email=$3 [QSA,L]
RewriteRule ^activate2/(.*)/(.*)/(.*)$ /activate2?user=$1&code=$2&email=$3 [QSA,L]
RewriteRule ^passwordtoken/(.+)/(.*)/(.*)$ /passwordtoken?user=$1&token=$2&email=$3 [QSA,L]

解决

1 个答案:

答案 0 :(得分:0)

尝试关闭多视图:

Options -Multiviews

如果你有一个文件的部分名称(如/activate2的{​​{1}}),mod_negotiation将启动并完全绕过mod_rewrite。


你需要在所有规则的最后,而不是开头:

/activate2.php

这是因为RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php [L] 检查还会检查路径信息,因此您的URI会被重写为-f,这与您的规则不符。