0

何らかの理由で、mod の書き換えに問題がありました。index.php を URL から削除しても問題ありませんが、プロファイルに対して同じことをしようとすると、ウェブマスターの連絡先ページが表示されます。現在、ルートオプションを選択していますが、少し問題があります。

My url is http://website.com/user/profile/user_profile/username 

私は私のルートにこれを持っています

$route['profile/(:any)'] = 'user/profile/user_profile';

したがって、website.com/profile/username と入力すると、正常に動作します。私の質問は、/profile も削除し、website.com/username を使用したい場合、どうすればルートでそれを行うことができますか?

念のため、ここに modrewrite を使用したトレイルを置いておくと、頭のいい人ならどこが間違っているか教えてくれます。

Options FollowSymLinks
RewriteEngine on

RewriteCond $1 !^(index\.php|images|css|javascript|cron|sit-env|robots\.txt)

RewriteCond $1 !^(index\.php|javascript|sit-env|robots\.txt)

RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond $1 !^(index\.php|images|css|javascript|cron|sit-env|robots\.txt)

RewriteCond $1 !^(index\.php|javascript|sit-env|robots\.txt)

RewriteRule ^([0-9a-zA-Z]+)([\/]?)$ /user/profile.php/user_profile/$1 [L]

前もって感謝します :)

4

2 に答える 2

1

このメソッドを使用して404_override、CodeIgniter でまだ定義されていないルートをキャプチャし、404 ページを表示する前にデータベースを検索しました。

私の例は実際にはCMS用ですが、要件に合わせて簡単に変更できます.

public function error_404()
{
    $Path = trim(uri_string(), '/');
    $this->load->model('page_model');
    $Page = $this->page_model->GetByPath($Path);
    if(empty($Page))
    {
        $ViewData = array
        (
            'PageTitle' => 'Error 404'  
        );
        $this->load->view('error_404', $ViewData);
        return;
    }
    else
    {
        $ViewData = array
        (
            'PageTitle' => $Page->Title,
            'Keywords' => $Page->Keywords,
            'Description' => $Page->Description,
            'CurrentPage' => $Page->Path,
            'Page' => $Page
        );
        $this->load->view('generic', $ViewData);
    }
}

私のapplication/config/routes.phpファイル内で、私は単に

$route['404_override'] = 'controller/error_404';

アクションcontrollerを含むコントローラーに置き換えます。error_404

www.domain.com/username元の要求に沿って、セグメント コレクションを使用して、失敗したときに渡されたユーザー名を見つけることができます。

$route['profile/(:any)'] = 'user/profile/user_profile/$1';

上記はにルーティングwww.domain.com/profile/abc123されますwww.domain.com/user/profile/user_profile/abc123

お役に立てれば?

于 2012-11-16T10:35:05.730 に答える
0

ルート通りに行けば、このようになる可能性があります。

$route['(:any)/'] = 'user/profile/user_profile';

ただし、ルールは上から下に評価されることに注意してください。サイトのルートがどれも機能しない場合は、それを user_profile コントローラーにリダイレクトしようとします。

これに関する主な短所は、ユーザーが実行する奇妙な URL が可能なユーザーとして解釈されることです。また、フォーラムという名前の誰かが自分のプロフィールを見たい場合、フォーラムがあればそこにリダイレクトされる可能性があります。

于 2012-11-08T02:16:18.560 に答える