URL ( http://www.example.com/index.php/login ) から index.php を削除し、www を非 www URL にリダイレクトする方法をいくつか試しました。
これが私のデフォルトの Apache VirtualHost ファイルです。
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/public/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/public/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
このファイルに以下を追加しました。
Redirect 301 / http://example.com
しかし、これは機能していません。リダイレクト ループ メッセージが表示されるだけです。次の .htaccess もあります。
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
私が追加したもの:
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
しかし、これもうまくいきません。
もう 1 つの問題は、すべてのルートにhttp://example.com/index.php/testのように index.php を含める必要があることです。
私の .htaccess ファイルが無視されているかのようです。
サーバーは、Ubuntu 13.04 x64 を実行する DigitalOcean ドロップレットです。PHP 5.4.9 と Apache 2.2.22 が含まれています。
どんな助けでも大歓迎です。ありがとう。