1

mod-rewrite を使用して Codeigniter サイトから「index.php」を削除しようとしています。しかし、私はこの問題で終わります:

元の URI: http://mysite.com/index.php/about

index.php を削除 した後に機能させる唯一の方法: http://mysite.com//about (余分なスラッシュに注意してください)

余分なスラッシュを削除すると、Codeigniter はドメインの後の URL 文字列を「認識」しなくなります。

現在、3 つの異なる mod-rewrite メソッドを試しましたが、すべて同じ問題が発生します。ドメイン名の後にスラッシュを追加しない限り、URI は機能しません。

私の現在の mod_rewrite コード:

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{HTTP_HOST} ^www.domain.co
RewriteRule (.*) http://domainname.co/$1 [R=301,L]

</IfModule>
4

2 に答える 2

0

まず、使用している mod_rewrite コードを投稿して、正しいことを確認してください。

2番目:アプリケーション構成ファイルで、インデックスページがこのようなものに設定されていないことを確認してください$config['index_page'] = '';

于 2012-09-02T14:14:22.067 に答える
0

問題の解決策は非常に簡単です。

このように編集してください.htaccess-

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /<directory_where_your_code_is_kept>/

RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,L]

RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{HTTP_HOST} ^www.domain.co
RewriteRule (.*) http://domainname.co/$1 [R=301,L]

</IfModule>

次にconfig.php、これらの変更を行ってください -

$config['base_url'] = 'http://localhost/<directory_where_your_code_is_kept>';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
于 2012-09-02T14:28:26.940 に答える