2

私は Phalcon を初めて使用し、フレームワークは気に入っていますが、リンクに問題があります。phalcon バージョン 0.6.1 と、私の phalcon テストがある xampp/htdocs/test に vhosts が設定された XAMPP 1.8.1 を使用しています。

私はチュートリアルに従っていましたが、問題が発生しました。リンクを使用して他のコントローラーをロードすると、アドレスバーに正しいパスが表示されますが、毎回 index.phtml がロードされることがわかります。ここにファイルをアップロードしましたので、ご自分で確認してください。

Tag::LinkTo() を使用するかどうかは関係ありません。変更されないためです。

編集:

指示に従い、.htaccess ファイルを /test および /test/public ディレクトリから削除して、httpd.conf に移動しました。その最後に私は追加しました

<Directory "C:/xampp/htdocs/www/test">
    RewriteEngine on
    RewriteRule  ^$ public/    [L]
    RewriteRule  (.*) public/$1 [L]
</Directory>

<Directory "C:/xampp/htdocs/www/test/public">
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</Directory>

このように httpd-vhosts.conf を変更しました

ServerAdmin admin@example.host
DocumentRoot "C:/xampp/htdocs/test/public"
DirectoryIndex index.php
ServerName example.host
ServerAlias www.example.host

<Directory "C:/xampp/htdocs/test/public">
    Options All
    AllowOverride All
    Allow from all
</Directory>

ページは読み込まれますが、/public/css/bootstrap.min.css のような絶対リンクが機能せず、リンクをクリックするとエラー 404 が表示され、オブジェクトが見つかりませんと表示されます。次のようにファイルを変更しました。

<Directory "C:/xampp/htdocs/test">
    RewriteEngine on
    RewriteRule  ^$ public/    [L]
    RewriteRule  (.*) public/$1 [L]
</Directory>

<Directory "C:/xampp/htdocs/test/public">
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</Directory>

ServerAdmin admin@example.host
DocumentRoot "C:/xampp/htdocs/test"
DirectoryIndex index.php
ServerName example.host
ServerAlias www.example.host

<Directory "C:/xampp/htdocs/test">
    Options All
    AllowOverride All
    Allow from all
</Directory>

しかし、リンクをクリックすると、URL に localhost:8005/sample と表示されていても index.phtml が再度読み込まれるという元の問題が発生します。

4

1 に答える 1

2

Apache の設定で .htaccess ファイルの読み取りが許可されていないようです:

<VirtualHost *:80>

    ServerAdmin admin@localhost
    ServerName phalcon.test

    DocumentRoot /srv/htdocs/sites/test        

    <Directory "/srv/htdocs/sites/test">
        AllowOverride All
        Options All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

また、public/index.php の先頭で、$_GET['_url'] の URI がブラウザに渡されていることを確認します。

于 2012-11-19T18:22:04.523 に答える