0

私のテスト アプリケーションではindex.php、URL から削除しようとしています。http://localhost/trackstar/の代わりにそのようにルートページにアクセスできますが、別のページや他のhttp://localhost/trackstar/index.phpページにアクセスしようとするとすぐに、そのページに行き着きます。ただし、オープニングは機能します。http://localhost/trackstar/projectindex.phphttp://localhost/trackstar/index.php/project

WAMP サーバーを使用しています。以下のような構成。

Apache の Rewrite モジュールが有効になっています。構成main:

'urlManager' => array(
        'urlFormat' => 'path',            
        'rules' => array(
            'commentfeed' => array('comment/feed', 'urlSuffix' => '.xml', 'caseSensitive' => false),
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
        'showScriptName' => false,
    ),

.htaccessプロジェクトのルート フォルダー内:

Options +FollowSymlinks
IndexIgnore */*
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

も追加しましたがhttpd.conf、実際には必要ではないと思います:

<Directory "c:/wamp/www/TrackStar/">
  Options Indexes FollowSymLinks
  AllowOverride All
  Order allow,deny
  allow from all
</Directory>

で追加パラメータの組み合わせをいくつか試しました.htaccessが、自分のindex.phpページにリダイレクトされ続けます。

これが機能しない理由について何か考えはありますか?

編集:

リダイレクトされているため、チェックインRewriteCondが成功しません。つまりREQUEST_FILENAME、ディレクトリまたはファイルとして見つかりません。私のディレクトリ構造に何か問題があるのでしょうか?

ここに画像の説明を入力

TrackStar\protected\views\projectたとえば、ディレクトリは、経由でアクセスしようとしているページですhttp://localhost/trackstar/project。私のYiiフレームワーク ファイルは、wwwフォルダーの上のディレクトリにあります。

4

4 に答える 4

1

次の後に .htaccess に追加してみてくださいRewriteEngine on:

RewriteBase /trackstar/

問題:ファイルが見つからない場合、リダイレクト先のファイルが見つかりhttp://localhost/index.php、リクエストでhttp://localhost/trackstar/index.php/projectファイルindex.phpが見つかり、正しく動作します

更新: urlManager の設定を変更してみてください (追加/trackstar/):

'urlManager' => array(
    'urlFormat' => 'path',            
    'rules' => array(
        'commentfeed' => array('comment/feed', 'urlSuffix' => '.xml', 'caseSensitive' => false),
        '/trackstar/<controller:\w+>/<id:\d+>' => '<controller>/view',
        '/trackstar/<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
        '/trackstar/<controller:\w+>/<action:\w+>' => '<controller>/<action>',
    ),
    'showScriptName' => false,
),
于 2013-10-18T09:21:16.720 に答える
0

2 つの簡単な手順でそれを行うことができます。

  1. config/main.php の「urlManager」を次のように構成します。

            'urlManager'=>array(
                'urlFormat'=>'path',
                'showScriptName'=>false,      
            ),
    
  2. 次のコードを使用して、アプリケーションのルートに .htaccess ファイルを追加します。

    Options +FollowSymLinks
    IndexIgnore */*
    RewriteEngine on
    
    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    # otherwise forward it to index.php
    RewriteRule . index.php
    

それでおしまい!

于 2013-10-18T13:44:51.467 に答える