使用mod_rewrite删除htaccess中的目录

时间:2013-10-16 01:58:30

标签: .htaccess mod-rewrite

我想剥离

http://host.name/html/about.html

http://host.name/about.html

但我在.htaccess文件中遇到以下问题时遇到404错误:

Options +FollowSymLinks
RewriteEngine on
rewritebase /
RewriteRule ^html/(.*) $1 [R,L]

http://htaccess.madewithlove.be/说它有效,我觉得它有效,但显然我错过了一些东西。

任何人都可以纠正我吗?

编辑:

当我尝试访问/ html /

时,它也会反弹到root

1 个答案:

答案 0 :(得分:0)

你倒退了。由于实际资源位于/html/about.html,因此您需要在内部将重写为该URI,而不是来自。内部重写到位后,您可以从外部将任何直接请求重定向到html目录。如下所示:

Options +FollowSymLinks -Multiviews
RewriteEngine On

RewriteCond %{THE_REQUEST} \ /html
RewriteRule ^html/(.*)$ /$1 [L,R=301]

RewriteCond %{DOCUMENT_ROOT}/html%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/html%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}/html%{REQUEST_URI} -s
RewriteRule ^(.*)$ /html/$1 [L]

或者您可以将最后一组条件/规则替换为:

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