3

問題

最初の問題: こんにちは私はURLからindex.phpを削除したい新しく作られたYiiサイトを持っています。
例:「/ index.php / site/index」は「/site/index」である必要があります

私はこのhttp://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23xガイドを使用していますが、404しか受け取りません。

間違いを指摘したり、この問題のデバッグにご協力いただければ幸いです。
関連情報を省略した場合はお知らせください。

OBS:「ホームページ」ページは意図したとおりに機能し、他のページは壊れています。

問題のステータス: mod_rewrite.soのapache/ubuntuの問題のようです

答え

さまざまな人々の助けを借りて、すべてが機能するようになりました:DIは、実行するために「rewrit」をインストールする必要がありました。これは、Running a2enmod rewritと書くことで実行しました。以下のシステム構成で問題が解決しました。このスレッドが、他のユーザーに役立つことを願っています。同様の問題。

私のシステム

Server version: Apache/2.2.22 (Ubuntu)  
Server built:   Nov  8 2012 21:37:45

Apache httpd.conf

<Directory "/var/www/MY_SITE/FOLDER_CONTAINING_YII/">
AllowOverride All
#...
</Directory>
LoadModule rewrite_module modules/mod_rewrite.so

これはファイルの内容全体です

Apacheエラーログ

File does not exist: /.../htdocs/site, referer: http://.../htdocs/index.php/site/index  

ドットを追加しました

Apacheを再起動します

kah@webaalborg:/etc/apache2/sites-available$ sudo service apache2 restart
 * Restarting web server apache2 
[Mon Nov 26 20:16:35 2012] [warn] module rewrite_module is already loaded, skipping
  ... waiting 
[Mon Nov 26 20:16:36 2012] [warn] module rewrite_module is already loaded, skipping
                                                                          [ OK ]

/ ect / apache2 / available-sites / default

...
DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>
    <Directory /var/www/MY_SITE>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
     </Directory>
...

Yiiディレクトリ構造:

  • フレームワーク
  • htdocs
    • 資産
    • css
    • .htaccess
    • index.php
    • index-test.php
    • テーマ
  • 保護

.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

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>',   
        ),
    ),  
4

4 に答える 4

5

Linux(ubuntuなど)で作業している場合は、/etc/apache2/sites-available/そこのパスに移動すると、という名前のファイルが見つかりますdefault

    <Directory /var/www/> <--- ***root directory***
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all <---- ***change this line***
    Order allow,deny
    allow from all
    </Directory>

そして私はあなたの問題が解決すると思います。

ありがとう。

于 2012-11-26T05:42:46.070 に答える
1

あなたAllowOverrideはあなたのディレクトリディレクティブにいますか?

<Directory "/your/path">
AllowOverride All
#...
</Directory>

そうでない場合、これはあなたの書き換えルールが機能しない理由を説明します。

于 2012-11-24T15:34:37.453 に答える
0

これを.htaccessに入れてみてください

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

また、httpd.confから「LoadModulerewrite_module modules / mod_rewrite.so」という行を削除し、コマンドラインからrewriteモジュールを有効にして、a2enmodrewriteを実行します。

于 2012-11-24T15:27:30.140 に答える
0
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride all <---- ***change this line***
    Order allow,deny  <---- ***change this line***
    allow from all
    Require all granted
</Directory>
于 2015-02-17T06:36:30.410 に答える