Mod rewrite Yii从URL中删除应用程序目录名
好吧,这似乎是一个相当普遍的问题,但我无法在论坛上找到一个明确的解决方案 我的Yii是这样设置的Mod rewrite Yii从URL中删除应用程序目录名,mod-rewrite,yii,appfog,Mod Rewrite,Yii,Appfog,好吧,这似乎是一个相当普遍的问题,但我无法在论坛上找到一个明确的解决方案 我的Yii是这样设置的 /webroot/framework /webroot/app /webroot/requirements 应用程序文件夹承载yii应用程序 但是,我的url看起来像:site[dot]com/app/site/index 如何从URL中删除“应用程序”部分 我尝试将.htaccess文件移动到webroot文件夹,它会重定向,但“app”仍然显示在url中 以下是/webroot/.htacce
/webroot/framework
/webroot/app
/webroot/requirements
应用程序文件夹承载yii应用程序
但是,我的url看起来像: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之上的一个目录中 可能是您可以将所有文件从/webroot/app移动到/webroot/并将yii放置在/webroot/yii。可能是您可以将所有文件从/webroot/app移动到/webroot/并将yii放置在/webroot/yii。我发布了一篇文章。 但是,将“应用程序”内容放在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专家,我想知道您现在是否找到了更好的解决方案?我发布了一个。
但是,将“应用程序”内容放在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专家,我想知道您现在是否找到了更好的解决方案?我通过像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并再次面对这个问题我通过像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,再次面临这个问题是的,我认为关键在于移动一些文件,所以它不是典型的目录结构。我觉得这样做有点不舒服,但似乎没有更好的解决方案。是的,我认为诀窍就是移动一些文件,所以它不是典型的目录结构。这样做我有点不舒服,但似乎没有更好的解决办法。