0

我在我的站点根目录中安装了concrete5 - 问题是C5 文件结构非常多样,而且它与我的子目录和子域混在一起。我不知道什么是我的代码,什么是 C5,我讨厌它。

我的解决方案是将所有内容移至 /_concrete/ 文件夹 - 但由于我的域必须指向根目录,因此我无法使用此处的文件。

输入 .htaccess:我需要编写一个脚本来将 www.domain.com 的任何实例(忽略子域)重定向到 www.domain.com/_concrete/ - 但不是透明的 301,只是一个别名。澄清:www.domain.com/page/并且www.domain.com/_concrete/page/应该显示相同的内容。www.domain.com/page/不应将其 URL 更改为www.domain.com/_concrete/page/.

我已经从我在其他地方使用的类似脚本改编了这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /_concrete/$1 [L,QSA]

但这只会导致服务器错误。我希望我很接近 - 谁能指出我正确的方向?

4

1 回答 1

1

您告诉服务器检查该值是否不是文件名,但您没有让它忽略_concrete目录本身(这也将匹配您的脚本并创建一个循环)。

这可能会让你更接近你想要做的事情。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^_concrete
RewriteRule ^(.*)$ _concrete/$1 [L,QSA]

此外,您可能希望它忽略也存在的目录。此时_concrete将不再匹配,因为它存在。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ _concrete/$1 [L,QSA]
于 2013-05-24T03:16:33.303 回答