0

我不得不承认,创建 mod-rewrite 规则仍然让我感到困惑!所以,我寻求一些帮助,请...

我已经使用了一个用 Laravel 构建的站点,但现在需要将现有论坛添加到域中。该论坛是 Ikonboard,它在实时站点上位于 cgi_bin 文件夹中。当我将它复制到新站点时,我无法访问,因为 htaccess 正在将所有 URL 重写到公用文件夹(Laravel 想要它的地方)。

那么,我怎样才能对 cgi_bin 文件夹发出任何请求,以及保持对 Laravel 的公开重写?

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Rewrite to 'public' folder
    RewriteCond %{HTTP_HOST} ^www.mydomain.com$
    RewriteCond %{REQUEST_URI} !public/
    RewriteRule (.*) public/$1 [L]
</IfModule>

谢谢

4

1 回答 1

1

简单的:

RewriteCond {%REQUEST_URI} !^/cgi_bin

将此添加到您的其他REQUEST_URI规则之上。如果cgi_bin在 URI 中,那么它将停止重写。

编辑- 根据您对目录结构的回复,这似乎是错误的。你的www目录就是你的public目录。因此,您的结构应如下所示:

  • /www/(您的公共文件夹)
    • bundles/(ETC...)
    • cgi_bin/
    • .htaccess
    • index.php
  • /laravel/
  • (ETC...)

将您的目录结构更改为如下所示,并确保您的.htaccess文件中包含以下内容:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks -MultiViews
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

如果你调用一个 CGI 文件,它应该通过,因为%{REQUEST_FILENAME} !-f上面已经设置了。所有资产也应该通过。您无需指定是否cgi_bin正在请求该文件夹。如果它不起作用,请按照我最初在此答案中添加的行(除了,您会将规则放在RewriteEngine On.

于 2013-05-14T05:43:10.080 回答