.htaccess将所有重定向到子文件夹

时间:2014-02-24 15:35:37

标签: .htaccess mod-rewrite redirect rewrite

我有这个网站,说http://example.com/。我希望所有请求都重定向(用户必须在地址栏中查看网址)http://example.com/#!/the_requested_page

所以这就是我想要发生的事情:

  • 请求http://example.com/ => 显示http://example.com/
  • 请求http://example.com/somepage => 显示http://example.com/#!/somepage
  • 请求http://example.com/#!/somepage => 显示http://example.com/#!/somepage

如何使用.htaccess文件完成此操作?

我尝试了这个,但它没有完成上面列表的第二部分。

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/#!/

# Don't apply to URLs that go to existing files or folders
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all those to insert /folder
RewriteRule ^(.*)$ /#!/$1 [L]

如果我请求http://example.com/somepage,则会在地址栏中显示该内容,但网站会显示主页(http://example.com)。

除此之外,这不会重定向,但它只是重写......

我希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

摆脱第一个条件。 URL的#部分从未发送到服务器,因此您无法与之匹配。然后将规则更改为:

RewriteRule ^(.+)$ /#!/$1 [L,R,NE]