0

私はシンプルな PyroCMS 2.2.1 サイトを持っており、Apache のデフォルトのホームページとログイン システムを使用しています (2.2.25 だと思います!)。私のローカル環境 (OS X 10.7/Apache 2.2.22) では、すべてが期待どおりに動作します。mod_rewrite を機能させるにはいくつか問題がありましたが、現在は URL がクリーンで機能しているように見えますが、フォームでログインできないことを除けば.

問題はログイン要求にあるようです。次のようにリクエストが送信された場合、ログインは機能しません。

http://www.ourdomain.com/users/login?email=admin&password=123456&btnLogin=Login

しかし!index.php が含まれている場合は機能します。そのようです:

http://games.coe.uky.edu/index.php/users/login?email=admin&password=123456&btnLogin=Login

フォーム アクションに index.php を追加することで総当たり攻撃を行うことができましたが、その必要はないはずです。CodeIgniter と PyroCMS フォーラムの投稿をいくつか調べましたが、解決策が見つかりませんでした。

背景: Apache で mod_rewrite を有効にした後、system/cms/config/config.php を次のように調整しました。

$config['index_page'] = '';

以下は、.htaccess ファイルのコピーです。

# Multiple Environment config
# Set this to development, staging or production
SetEnv PYRO_ENV development

<IfModule mod_rewrite.c>

    # Make sure directory listing is disabled
    Options +FollowSymLinks -Indexes
    # disable the Apache MultiViews directive if it is enabled on the server. It plays havoc with URL rewriting
    Options -MultiViews
    RewriteEngine on

    # Automatically determine and set the PYRO_ENV variable
  #RewriteCond %{HTTP_HOST} ^local.domain.com$
  #RewriteRule (.*) $1 [E=PYRO_ENV:development]

  #RewriteCond %{HTTP_HOST} ^stage.domain.com$
  #RewriteRule (.*) $1 [E=PYRO_ENV:staging]

  #RewriteCond %{HTTP_HOST} ^domain.com$
  #RewriteRule (.*) $1 [E=PYRO_ENV:production]

    # NOTICE: If you get a 404 play with combinations of the following commented out lines
    #AllowOverride All
    #RewriteBase /home/supers/htdocs

    # Restrict your site to only one domain
    # !important USE ONLY ONE OPTION

    # Option 1: To rewrite "www.domain.com -> domain.com" uncomment the following lines.
    #RewriteCond %{HTTPS} !=on
    #RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    # Option 2: To rewrite "domain.com -> www.domain.com" uncomment the following lines.
    #RewriteCond %{HTTPS} !=on
    #RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    #RewriteCond %{HTTP_HOST} (.+)$ [NC]
    #RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

    # Keep people out of codeigniter directory and Git/Mercurial data
    RedirectMatch 403 ^/.*/(system/cms/cache|system/codeigniter|system/cms/config|system/cms/logs|\.git|\.hg).*$

    # Send request via index.php (again, not if its a real file or folder)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    <IfModule mod_php5.c>
        RewriteRule ^(.*)$ index.php/$1 [L]
    </IfModule>

    <IfModule !mod_php5.c>
        RewriteRule ^(.*)$ index.php?/$1 [L]
    </IfModule>

</IfModule>

ありがとう!

4

2 に答える 2

0

誰もがこれを参考にするかどうかはわかりませんが、この問題は mod_rewrite が Apache にインストールされていないことが原因でした。これは、ブラウザーで phpinfo() の出力を調べることで判断できました。これはコード例ですが、必要というわけではありません;)

<?php print_r(phpinfo()) ?>
于 2013-09-06T19:32:33.323 に答える