0

我在 Laravel 中创建了一个应用程序。我最初的 .htaccess 是:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

它适用于域 api.viglug.org。在我添加了 m.forum.viglug.org 域之后(与 api.viglug.org 的根目录相同)。此时调用 api.viglug.org 和 m.forum.viglug.org 完全一样。我想将 m.forum.viglug.org 用于 api.viglug.org/mobile 文件夹,所以我认为它可以与这个 .htaccess 一起使用:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On
</IfModule>
<IfModule mod_rewrite.c>
    RewriteCond %{HTTP_HOST} m\. [NC] 
    RewriteRule ^(.*)$ index.php/mobile/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

我错了。如果我使用 m.forum.viglug.org,它会不断返回错误 500,而 api.viglug.org 会按预期工作。我怎样才能解决这个问题?

4

1 回答 1

1

由于以下两个条件,原始重写仅在不作为真实文件或目录存在的文件上运行:

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

您是否尝试在附加规则之上添加这两个条件?

# Mobile site
RewriteCond %{HTTP_HOST} m\. [NC] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/mobile/$1 [L]

# Normal site
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
于 2013-01-12T01:28:11.420 回答