从网址中删除字符串(.htaccess)

时间:2015-05-18 13:31:32

标签: regex apache .htaccess mod-rewrite

我的网址如下所示:

example.com/index.php?redirected=1

在我的.htaccess文件中,我想删除网址的最后一部分。

我写道:

RewriteCond %{HTTP_HOST} ^example.com\/index.php\?redirected=1$ 
RewriteRule ^(.*) http://www.example.com/$1 [L,R=301]

但由于某种原因,它不起作用。就在这一行之后:

RewriteEngine on
RewriteBase /

我发现了类似的问题,但这并不能解决问题。 感谢

在.htaccess文件中使用此代码,它会将我重定向到:www.example.com/index.php

RewriteCond %{THE_REQUEST} \ /+(.*)\?redirected=1&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R]

当我删除%2(我认为是index.php - 部分时,它会导致infinte重定向。

更新: 我像这样更新了正则表达式:

RewriteCond %{THE_REQUEST} \ /+(.*)\?redirected=1&?([^\ ]*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1 [L]

最后还是“index.php”

2 个答案:

答案 0 :(得分:2)

请改为尝试:

RewriteCond %{THE_REQUEST} \ /+(.*)\?redirect=1&?([^\ ]*)
RewriteRule ^ /%1?%2 [L,R]

%{HTTP_HOST}变量仅限主机名,其中不包含路径或查询字符串。

答案 1 :(得分:0)

您可以使用此规则来删除查询字符串,以及删除index.php

RewriteCond %{THE_REQUEST} /index\.php\?redirected=1[&\s] [NC]
RewriteRule ^(.*?)index\.php$ /$1? [L,R=302,NC,NE]