我最近开始使用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]
解决
答案 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
,这与您的规则不符。