使用.htaccess删除URL的一部分。 404重写后

时间:2013-10-28 17:13:09

标签: apache .htaccess mod-rewrite url-rewriting

我对我的重写感到困惑。我想做以下事情:

  • example.com/ not / needed /index.php→example.com/index.php
  • example.com/ not / needed / folder /→example.com/folder /
  • 应保留查询参数

我已经有了重写规则来完成这项任务:

Options +FollowSymlinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteRule ^not/needed(.*)$ $1 [L,R=302,QSA]

然而,在重写完成后,我得到404.如何告诉服务器它应该显示原始URI中的内容?

1 个答案:

答案 0 :(得分:0)

您的规则只适用于一个方向。 RewriteRule <target> <destination>,没有任何魔法让它反过来。您需要显式创建一个相反的规则:

Options +FollowSymlinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \ /+not/needed/(.*)
RewriteRule ^not/needed(.*)$ $1 [L,R=302]

RewriteCond %{REQUEST_URI} !^/not/needed/
RewriteRule ^(.*)$ /not/needed/$1 [L]