0

我知道这里有一些这样的问题,所以请原谅我无法将它们拼凑在一起 - 我希望仅在有人访问根目录时显示子目录(主站点),而站点的其余部分保持正常。

结构是:

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]   

谢谢

4

1 回答 1

1

因此,通过“某人仅访问根目录”,我假设您的意思是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.phphttp://www.mysite.com/css/

RewriteRule ^([^/]*)$ /sites/mainsite/$1 [L] 

其他一切都是一样的。

您设置正则表达式的方式:

RewriteRule ^(.*)$ /sites/mainsite/$1 [L]   

重写除“globalcss”之外的所有内容。这似乎与您的要求完全不同,即“网站的其余部分保持正常”。


唯一的问题是我的站点/主站点/css 现在无法正常工作,因为它看起来相对于根目录,而不是原始位置。我该如何解决这个问题?我也有一个 js 文件夹,我认为它也有同样的问题

浏览器看起来相对于根目录,因为这就是它所知道的一切。它所知道的只是“我去这里:http://mysite.com/我看到了链接"css/some_file.css",所以它唯一能做的就是去http://mysite.com/css/some_file.css,浏览器对所有这些仅存在于服务器上的重写或别名一无所知。

如果您希望 css 能够被访问,那么您也需要一个规则(这真的是一种可怕的、可怕的方式来完成所有这些工作):

RewriteEngine on
RewriteCond %{REQUEST_URI} !globalcss
RewriteCond %{REQUEST_URI} !^/sites/mainsite/css
RewriteRule ^css/(.*)$ /sites/mainsite/css/$1 [L] 

可能也类似于js的东西

于 2013-09-26T20:07:23.140 回答