htaccess在哪里剪切查询字符串?

时间:2014-02-06 07:03:12

标签: .htaccess mod-rewrite redirect

这是我的htaccess

php_flag session.use_trans_sid off
php_flag session.use_only_cookies on
Options +FollowSymLinks

            RewriteEngine On


            RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
            RewriteRule ^(.*)$ http://automaticheskie-vorota.ru/? [R=301,L]


            RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]

            RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]

            RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
            RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
            RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
            RewriteRule .* index.php [F]



            RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
            RewriteCond %{REQUEST_URI} !^/index\.php
            RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule .* index.php [L]

如果我转到http://site.ru/?utm_source=123网站,301会重定向到http://site.ru我不希望它这样做。 无法理解它在htaccess中删除查询字符串的位置。

2 个答案:

答案 0 :(得分:0)

从第一条规则中移除?

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^(.*)$ http://automaticheskie-vorota.ru/ [R=301,L]

答案 1 :(得分:0)

我认为您已经确认已修改的.htaccess文件已成功上传或重写到正确的位置,并且您没有将新副本放在错误的位置,并且旧副本不是&# 39; t只读(忽略文件编辑或上传)。

您可以通过注释掉(#)三个&#34;块之一&#34;来开始调试它。 RewriteCond / Rules,并查看哪个块导致您描述的不需要的行为。然后,您可以将其缩小到该块内的特定RewriteCond或RewriteRule。您还应该添加一些关于三个块应该做什么的评论,以帮助将来进行维护。

顺便说一句,你应该把php_flag(以及php_value)命令移动到php.ini(或类似的)文件,如果可能的话。最终,您的服务器将升级,并且您将在.htaccess中使用那些命令获得内部服务器错误。