私はシンプルな 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>
ありがとう!