2

好吧,这似乎是一个很常见的问题,但我在论坛上找不到明确的解决方案。

我的 Yii 是这样设置的

/webroot/framework
/webroot/app
/webroot/requirements

app 文件夹托管 yii 应用程序

但是我的网址看起来像:site[dot]com/app/site/index

如何从 URL 中删除“应用程序”部分。

我尝试将我的 .htaccess 文件移动到 webroot 文件夹并重定向,但 'app' 仍然显示在 url

这是/webroot/.htaccess的内容

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /

  # need this for AMZN ELB or get a infinite redirect loop 
  RewriteCond %{HTTP:X-Forwarded-Proto} !https
  RewriteCond %{SERVER_NAME} !^localhost$
  RewriteRule (.*) %{HTTP_HOST}%{REQUEST_URI} [L]

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

  RewriteRule . /app/index.php 
</IfModule>

如果我可以将我的 webroot 更改为 /webroot/app 但我无法控制,我会很容易。谢谢你的帮助..

这是在 appfog 上启动的,因此我无法控制 webroot,或者让框架文件夹位于 webroot 上方的一个目录中。

4

3 回答 3

2

我通过像 config/main.php 这样的配置解决了这个问题,然后输入:

'request'=>array(
        'baseUrl'=>'',

    ),
     'urlManager'=>array(
        'baseUrl'=>'',
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'appendParams' => true,
        'rules'=>array(

        ),
    ),  'request'=>[
        'baseUrl'=>'',

    ],
     'urlManager'=>array(
        'baseUrl'=>'',
        'urlFormat'=>'path',
        'showScriptName'=>false,
        'appendParams' => true,
        'rules'=>array(

        ),
    ),

刚回到 Yii 又遇到了这个问题

于 2014-02-28T19:18:37.343 回答
1

May be you can move all files from /webroot/app to /webroot/ (and place yii at /webroot/yii).

于 2012-12-02T17:57:36.270 回答
1

我发布了一个类似的问题。但是,将“应用程序”内容放在 webroot/ 中不是我的选择,因为我需要它是可移植的,并且在不久的将来,我将在 webroot/ 中运行其他“应用程序”在同一个 webroot/框架上。

我设法将 example.com 重定向到 example.com/app 并从 URL 中删除了 /app 部分。我被重定向到默认控制器/操作。但是,当我单击指向(例如)example.com/site/login 的链接时,它仍然会将我带到默认控制器/操作。

我的 webroot/.htaccess 看起来像这样:

RewriteEngine on

RewriteCond $1 !^application/
# if a directory or a file exists, use it directly
RewriteCond %{DOCUMENT_ROOT}/application/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/application/$1 -d
RewriteRule ^(.*)$ application/$1 [L]

# otherwise forward it to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
# RewriteRule ^.*$ application/index.php does not 'remove' the directory with this??
RewriteRule ^$ application [L]

也许它可以帮助你?而且由于我不是 .htaccess 专家,我想知道您现在是否找到了更好的解决方案?

于 2013-05-08T06:48:50.617 回答