1

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 が含まれています。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1