-1

スラッシュの後のすべてを にリダイレクトするルールを作成しましたindex.php?section=site。このルールは正常に機能します。

RewriteRule (.*)(\/)? index.php?section=site

uri が/cms/....にリダイレクトする場合index.php?section=cms。問題は、最初のルールがすべてを示してindex.php?section=siteいるため、URLの開始が cms である場合、それを回避するにはどうすればよいですか?

私はこれを試しました:

RewriteRule (.*)(\/)? index.php?section=site
RewriteRule cms\/(.*) index.php?section=cms [L]

例えば ​​:

  1. 次のような URL: domain.com/login 、 index.php?section=site に属します
  2. 次のような URL: domain.com/cms/login 、 index.php?section=cms に属します
4

2 に答える 2

1

これが唯一のルールであり、目標がFront-end Controllerindex.phpとして使用することである場合は、PHP を使用してリクエストを解析/ルーティングすることをお勧めします。FallbackResource

FallbackResource /index.php

最終的に、オーバーヘッドと複雑さを回避し、mod_rewrite間違いなくより大きな柔軟性を提供します。

于 2012-09-11T03:25:44.193 に答える
0

htaccessで試したすべてがうまくいかなかったので、簡単な解決策を見つけました。

.htaccess ファイル:

RewriteRule (.*) index.php

索引ファイル:

$uri = $_SERVER['REQUEST_URI'];
$ex = explode("/",$uri);
switch($ex[2])
{
    case "cms":
        // cms dispatch here
    break;

    default:
       // site dispatch here
    break;

}

とにかくありがとう :)

于 2012-09-11T12:43:10.657 に答える