.htaccess htaccess子目录作为根目录
我知道这里有一些类似的问题,所以请原谅我不能把它们拼凑在一起-我希望在有人只访问根目录时显示一个子目录(mainsite),而站点的其余部分保持正常 结构是:.htaccess htaccess子目录作为根目录,.htaccess,.htaccess,我知道这里有一些类似的问题,所以请原谅我不能把它们拼凑在一起-我希望在有人只访问根目录时显示一个子目录(mainsite),而站点的其余部分保持正常 结构是: www.mysite.com --globalcss --sites--mainsite--index.php --anotherpage.php --css--style.css --anothersite --ano
www.mysite.com
--globalcss
--sites--mainsite--index.php
--anotherpage.php
--css--style.css
--anothersite
--anothersite
我还试图让主站点索引页面(../../globalcss/global.css)上的相对css链接在主站点索引显示在根目录中后工作。有一次我让页面正常工作,但是css链接错误地显示为sites/mainsite/globalcss/
,忽略了。/../
(如果可能的话,我宁愿保持它们的相对性,因为我的本地主机根不匹配)
以下是我到目前为止的情况:
RewriteEngine on
# attempting to get only requests in the root directory
RewriteCond %{REQUEST_URI} !(sites|globalcss)
# show the mainsite content instead
RewriteRule ^(.*)$ /sites/mainsite/$1 [L]
谢谢所以“某人只访问根”,我想你的意思是http://www.mysite.com/
,而不是http://www.mysite.com/anotherpage.php
。如果是这样,那么:
RewriteEngine on
RewriteCond %{REQUEST_URI} !globalcss
RewriteCond %{REQUEST_URI} !^/sites/mainsite
RewriteRule ^$ /sites/mainsite/ [L]
如果您实际引用的不是子目录,如:http://www.mysite.com/
正常,http://www.mysite.com/a-file.php
可以,但http://www.mysite.com/css/
不应重写,则规则需要如下所示:
RewriteRule ^([^/]*)$ /sites/mainsite/$1 [L]
其他一切都是一样的
使用正则表达式设置的方式:
RewriteRule ^(.*)$ /sites/mainsite/$1 [L]
重写除“globalcss”之外的所有内容。这似乎与你的要求完全不符,你的要求是“网站的其余部分保持正常。”
唯一的问题是我的站点/mainsite/css现在不工作了,因为它看起来是相对于根的,而不是原始位置的。我怎样才能解决这个问题?我也有一个js文件夹,我想它也有同样的问题 浏览器看起来是相对于根的,因为它只知道这些。它只知道“我在这里:
http://mysite.com/
我看到链接“css/some_file.css”
,所以它唯一能做的就是转到http://mysite.com/css/some_file.css
,浏览器对所有这些仅存在于服务器上的重写或别名一无所知
如果您希望css能够被访问,那么您也需要一个规则(这真的是一种非常糟糕的方式):
可能类似于js的东西也这样,您的live server上的版本会更接近,您可以使用别名域,而不会出现上述问题。感谢@Prix的提示,但我在多台pc上使用一个xampp实例运行dropbox。同步的好处大于我与t的问题您不需要多个XAMP实例,只需在
vhosts.conf
或httpd.conf
文件中添加新的virtualhost即可,具体取决于它的配置方式。这是可行的(顶部部分),唯一的问题是我的站点/mainsite/css现在不起作用了,因为它看起来是相对于根目录的,而不是原始位置的。我如何解决这个问题?我在那里也有一个js文件夹,我想它也有同样的问题。@John都取决于你链接的方式,浏览器不知道服务器上发生了什么,它只看到HTML并发送请求UEST上一个重写规则不起作用,但添加了它:RewriteCond%{REQUEST_URI}!^css/(*)$
。现在我在同一目录下的images文件夹中遇到了同样的问题。我如何添加它,尝试了同样的方法,添加了另一行并将“css”替换为“images”,但没有成功。我想因为images本身就有子文件夹。有没有办法压缩一条规则来排除:images | js | css | php子文件夹?
RewriteEngine on
RewriteCond %{REQUEST_URI} !globalcss
RewriteCond %{REQUEST_URI} !^/sites/mainsite/css
RewriteRule ^css/(.*)$ /sites/mainsite/css/$1 [L]