我对mod_rewrite不是很好,但我现在真的需要它。
我将全新网站放在名为site
的文件夹中。因此,如果您需要访问新网站,网址将显示为http://domain.com/site/...
。现在,我需要从网址中排除site
,但仍然会将其指向/site/
除以外的一个名为upload
的文件夹。我怎么能这样做?
所以http://domain.com/anything.ext
和http://domain.com/anyfolder
会指向http://domain.com/site/...
,但domain.com/upload
仍然指向domain.com/upload
。
那么另一个问题是,假设这只适用于临时解决方案,或者它是否真的重要(考虑速度和效率)?
答案 0 :(得分:10)
(假设您将规则放在文档根目录中的.htaccess文件中)使用:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^upload
RewriteRule (.*) site/$1 [L]
如果你把它放到httpd.conf中,你需要稍微改一下:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/upload
RewriteRule (.*) /site$1 [L]
关于第二个问题,我个人不喜欢mod_rewrite,除非你绝对必须,否则肯定不会将它作为永久解决方案。这是因为mod_rewrite效率很低,特别是在繁忙的服务器上,因为它必须在每个传入的请求上运行至少一个正则表达式。您应该始终使用[L]
标志来确保不再处理超出必要的规则。
以与应用程序引用它们相同的方式构建目录总是更有效。以上应该让你工作,但尽量不要让它保持太长时间。
我确定你已经知道了,但是here是mod_rewrite文档。