如何重写URL以忽略子目录?

时间:2012-05-23 20:35:21

标签: .htaccess mod-rewrite

我有这个网址:

http://www.example.com/some-annoying-folder/page.html?name=stack+overflow

但该文件实际上位于根目录中,应该如下所示:

http://www.example.com/page.html?name=stack+overflow

此外,还有类似的子目录也需要修改。

尽管我使用htaccess,但我仍然很难习惯它。

提前感谢您的帮助!

更新

RewriteEngine On
Options +FollowSymLinks

RewriteRule .*(schedule.html|tickets.html|venue.html|city.html|concerts.html)$ $1 [L,R=302,QSA,NC]

#BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
#END WordPress

2 个答案:

答案 0 :(得分:1)

给定OP的额外输入 - 假设page1.html和page2.html是两个文件,前面有不存在的目录。这条规则将解决这个问题:

RewriteRule .*(page1.html|page2.html)$ $1 [L,R=302,QSA,NC]

如果你有更多这样的文件,你可以简单地将它们添加到|之间,如上所述。

编辑已修改的规则以及更多信息:

RewriteRule .+/(schedule.html|tickets.html|venue.html|city.html|concerts.html)$ $1 [L,R=302,QSA,NC]

答案 1 :(得分:0)

这适用于Apache:

RedirectMatch 301 ^/subfolder/$ http://www.example.com/