我的网址如下所示:
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”
答案 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]