我的服务器中有一个.htaccess文件,用于将我的子域网站索引文件夹重新公开。 但是,重定向后,css,js,img文件都无法加载 怎么解决?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.subdomain.domain\.com.sg$
RewriteRule ^/?$ "http\:\/\/subdomain.domain\.com.sg\/" [R=301,L]
DirectoryIndex public/index.php
编辑: 我已将我的htaccess文件更新为此。 索引文件已正确加载,但我可以从网址中删除“公共”吗?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.subdomain.domain\.com.sg$
RewriteRule ^/?$ "http\:\/\/subdomain.domain\.com.sg\/" [R=301,L]
RewriteRule ^index.php$ subdomain.domain.com.sg/public/index.php [R=301,L]
抱歉,我是apache环境的新手
答案 0 :(得分:0)
“我可以从网址中删除”public“吗?”您可能会询问是否可以在内部重写对/public
文件夹的传入请求。当然可以。问题是,如果您只想 要重定向index.php
文件,或者所有请求。请注意,这些规则实现了内部重写,因此不更改浏览器中可见的URL,这很可能是您想要的:
# http://subdomain.example.com/index.php => /public/index.php
RewriteRule ^/?index.php$ /public/index.php [L,QSA]
更通用的方法:
# http://subdomain.example.com/foo/bar => /public/foo/bar
RewriteRule ^/?(.*)$ /public/$1 [L,QSA]
如果您在http服务器主机配置中注册index.php
作为索引文档,那么您甚至可以从URL中删除它。文档:https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryindex:
# http://subdomain.example.com/ => /public/index.php
DirectoryIndex index.php
一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用.htaccess
样式文件。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。