1

symfony 1.4 のルーティングと環境またはモジュールに関して深刻な問題があるため、frontend 、mobile 、および backend の 3 つのモジュールを作成しました。

したがって、フロントエンドとモバイル モジュールでは、ほぼ同じルーティングを使用しています。

//apps/frontend/config/routing.yml

home:
 url:   /home
 param: { module: user, action: home }

homepage:
 url:   /
 param: { module: content, action: index } 

  ....

default_index:
 url:   /:module
 param: { action: index }

default:
 url:   /:module/:action/*

モバイルモジュール:

//apps/mobile/config/routing.yml

home:
 url:   /home
 param: { module: user, action: home }

homepage:
 url:   /
 param: { module: sfGuardAuth, action: signin } 

  ....

default_index:
 url:   /:module
 param: { action: index }

default:
 url:   /:module/:action/*

リンクを使用して自分のサイトにアクセスします

mysite.com/  ==> frontend module(frontend.php)
mysite.com/mobile.php ==> mobile module(mobile.php)

問題は、モバイル版にアクセスしてページを正しくログインしたときですが、ログイン後、モバイル モジュールのホームページではなく、フロントエンド モジュールのホームページにリダイレクトされますか?

述べる :

このリンクmysite.com/mobile_dev.phpを dev env で使用すると、モバイル バージョンは非常に正常に動作します。

編集 :

ここに私のhtaccessがあります:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]
</IfModule>

Options +FollowSymLinks +ExecCGI

 <IfModule mod_rewrite.c>
 RewriteEngine On

 # uncomment the following line, if you are having trouble
 # getting no_script_name to work
 RewriteBase /

# we skip all files with .something
#RewriteCond %{REQUEST_URI} \..+$
#RewriteCond %{REQUEST_URI} !\.html$
#RewriteRule .* - [L]

# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]

</IfModule>

そのため、リンクに変更index.phpすると、モバイル版のホームページに直接移動し、すべて正常に動作します...mobile.phpmysite.com/mobile.php

したがって、私の問題は、.htaccessを編集して次のようにリダイレクトする方法です。

mysite.com/index.php or mysite.com/  redirect me to my site 
mysite.com/mobile.php redirect me to mobile version

編集2:

このリンクから開始すると、mysite.com/mobile.phpモバイルアプリにリダイレクトされてログインページにリダイレクトされますが、代わりにログイン後にホームページに移動すると、新しいリクエスト検索のデフォルトのフロントコントローラーが表示され、index.php がポイントされるため、ホームページが表示されますモバイルアプリではなく、フロントエンドアプリの

では、なぜ symfony はmobile_dev.php常にmobile.phpモバイル開発環境にいて、最初のリダイレクトで prod mobile env から frontend prod env に切り替えるのでしょうか?

4

4 に答える 4

0

あなたは調べたいと思うかもしれませんrelative_url_root.Symfonyは相対URLルートを検出しません.

于 2013-04-25T18:37:06.630 に答える
0

no_script_name: true同じドメイン/サブドメイン上にある場合は、(フロントエンドとモバイル アプリの場合) 2 回使用することはできません。1 回だけ使用してください。

于 2013-04-25T17:27:51.400 に答える