RewriteRule重定向除一个文件夹以外的所有内容

Boy*_*oyd 6 apache mod-rewrite

我对mod_rewrite不是很好,但我现在真的需要它.

我将整个新网站放在一个名为的文件夹中site.因此,如果您需要访问新网站,网址将会是这样的http://domain.com/site/....现在我需要site从URL中排除它,但仍然指向/site/一个名为的文件夹的EXCEPT upload.我怎样才能做到这一点?

所以http://domain.com/anything.ext,http://domain.com/anyfolder并指出http://domain.com/site/...除了domain.com/upload仍然指向的domain.com/upload.

那么另一个问题是,假设这只适用于临时解决方案,还是不重要(考虑速度和效率)?

Dav*_*dom 10

(假设您将规则放在文档根目录中的.htaccess文件中),请使用以下命令:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^upload
RewriteRule (.*) site/$1 [L]
Run Code Online (Sandbox Code Playgroud)

如果你把它放到httpd.conf中,你需要稍微改一下:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/upload
RewriteRule (.*) /site$1 [L]
Run Code Online (Sandbox Code Playgroud)

关于第二个问题,我个人不喜欢mod_rewrite,当然不会将它用作永久解决方案,除非你绝对不得不这样做.这是因为mod_rewrite效率很低,特别是在繁忙的服务器上,因为它必须在每个传入的请求上运行至少一个正则表达式.您应始终使用该[L]标志以确保不再处理超出必要的规则.

以与应用程序引用目录相同的方式构建目录总是更有效.以上应该让你工作,但尽量不要让它保持太长时间.

我相信你已经知道了,但这里是mod_rewrite文档.