.htaccess - 别名域根到子文件夹

时间:2013-05-24 02:50:16

标签: .htaccess redirect

我在我的站点根目录中安装了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/不应将其网址更改为www.domain.com/_concrete/page/

我从我在别处使用的类似脚本中改编了这个:

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

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

1 个答案:

答案 0 :(得分: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]