无法正确合并两个.htaccess

时间:2013-10-15 14:28:43

标签: apache .htaccess

有2个.htaccess个文件,一个位于/,另一个位于/web个文件夹中。

在根文件夹(/)中,.htaccess看起来像

RewriteEngine on
RewriteRule    ^$ web/    [L]
RewriteRule    (.*) web/$1 [L]

/web文件夹中,.htaccess看起来像

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

效果很好。

我想要的只是合并这些条件并将它们放在一个.htaccess中,它位于根目录(/)中。

1 - 我尝试添加RewriteBase,例如

RewriteBase /web

2 - 我试图替换了解web文件夹的条件

RewriteRule ^(.*)$ web/index.php/$1 [QSA,L]

3 - 我试图简单地将配置从一个文件附加到另一个文件,稍作修改。

但这一切都不起作用 - 它会导致内部500服务器错误。

在这种情况下如何进行适当的合并?

2 个答案:

答案 0 :(得分:2)

.htaccess(在根文件夹中)应符合您的需求:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ web/index.php/$1 [QSA,L]

答案 1 :(得分:1)

如果您要将所有规则放在文档根目录(/)中,请尝试:

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