web-dev-qa-db-ja.com

Yii Frameworkでindex.phpを削除する方法

enter image description hereやあみんな私はYiiフレームワークの初心者です。URLからindex.phpを削除したいです。リライトエンジンを置くときにyiiドキュメントに従ってください.htaccessファイルのコードとconfig/main.phpファイルのshowScriptNameをfalseに設定すると、500内部サーバーエラーが発生します。htaccessファイルはアプリケーションのルートフォルダーにあります。どこが間違っているのか教えてください

更新:

これは私の.htaccessファイルのコードです:

# 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
13
Code Prank

これを試して

良い説明はここにあります

http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x

15
Akhil Thayyil

メインページのURLから/indexも削除する場合は、次のように''=>'site/index'をurlManagerルールの先頭に追加します。

'urlManager'=>array(
    'urlFormat'=>'path',
    'showScriptName' => false,
    'rules'=>array(
        ''=>'site/index',
        '<action>'=>'site/<action>',
6
Samuel Liew

yiiドキュメント から直接取得

Index.phpを非表示にするURLをさらにクリーンアップするためにできることがもう1つあります。つまり、URL内のエントリスクリプトindex.phpを非表示にします。これには、WebサーバーとurlManagerアプリケーションコンポーネントを構成する必要があります。

最初に、入力スクリプトのないURLを入力スクリプトで処理できるようにWebサーバーを構成する必要があります。 Apache HTTPサーバーの場合、これは、URL書き換えエンジンをオンにし、いくつかの書き換えルールを指定することで実行できます。次の内容でファイル/wwwroot/blog/.htaccessを作成できます。同じコンテンツを/ wwwroot/blogのDirectory要素内のApache構成ファイルに入れることもできることに注意してください。

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

次に、urlManagerコンポーネントのshowScriptNameプロパティをfalseに構成します。

ここで、$ this-> createUrl( 'post/read'、array( 'id' => 100))を呼び出すと、URL/post/100を取得します。さらに重要なことに、このURLはWebアプリケーションによって正しく認識されます。

私の問題も解決したので、これが役立つことを願っています。

3
WebDevPT

次の3つの手順を実行します。

  1. ApacheでURLの書き換えを有効にします。

  2. プロジェクトのルートに.htaccessを配置します

RewriteEngineオン

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php
  1. 構成でprotected/config/main.phpで、URLマネージャーコンポーネントに次のようにshowScriptNameをfalseに設定します>> urlManager
'urlManager'=>array(
  'urlFormat'=>'path',
  'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view',
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),
  'showScriptName'=>false,
)
3
Waqar Alamgir

以下のようにconfig/main.phpを変更します。

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

次に、htaccessファイルを保護されたフォルダ(保護されたフォルダ内にある可能性があります)のあるベースディレクトリに配置します。コードの下にhtaccessファイルを配置します。

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

またはこれで試してください---

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php/$1 [L,QSA]

完了...うまくいくことを願っています

1
Ankit Rathi

apache構成値を変更する

AllowOverridenoneからAllowOverrideALL

httpd.confまたはhttpd-vhosts.conf内

0

このスレッドに出くわしたばかりですが、それを機能させるには、.htaccessファイルを追加するための指示に従うだけでなく、メインの構成ファイル(\ protected\config\main)から以下のセクションのコメントを外す必要があることがわかりました。 php):

        // uncomment the following to enable URLs in path-format

    'urlManager'=>array(
        'urlFormat'=>'path',
        'rules'=>array(
            '<controller:\w+>/<id:\d+>'=>'<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
            '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
        ),
    ),
0
Xoundboy

.htaccessとurlManagerへのすべての変更がまだ機能していないように思われる場合は、Apachehttpd.confファイルのルートディレクトリのAllowOverrideパラメータを「All」ではなく「All」に変更したことを確認してください。 "無し"。変更後、Apacheを再起動します。これは、.htaccessファイルでオーバーライドできるすべてのパラメーターをApacheに決定させるパラメーターであるためです。

0
Ajeet Singh

プロジェクトをLinuxサーバーに移行したときも、この問題が発生しました。私は示されているすべての方法を実行しましたが、助けにはなりませんでした。次に、。htaccessファイルをprotectedディレクトリも、それから動作しました。

0