-1

mod_rewrite について学習しようとしています。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ /indexl.php?/$1 [L]

    #When your application folder isn't in the system folder
    #This snippet prevents user access to the application folder
    #Submitted by: Fabdrol
    #Rename 'application' to your applications folder name.
    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ /indexl.php?/$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ indexl.php?/$1 [L]

    </IfModule> 

これは、CI の .htacces ファイルの内容です。このファイルを使用するのは、おそらく他のアプリケーションで動作するからです。ただし、index.php の名前を変更すると機能しません。ブラウザでディレクトリ構造を取得します。ファイルの名前がindex.phpの場合でも機能するのか、それとも自動的にindex.phpを使用するのか疑問に思っています。これはいけません

RewriteRule ^(.*)$ indexl.php?/$1 [L]

すべてのリクエストを indexl.php にリダイレクトしますか???

4

2 に答える 2

2

RewriteRule スニペットは、指定された URL パスに応じてリダイレクトします。で空のものを指定するとhttp://example.com/-f-dチェックは失敗しません。indexl.phpしたがって、上記のスクリプトを書き換えることはありません。

index.*また、ファイル (.php または .html)がない場合は、 Apache の自動インデックス (ディレクトリ リスト) が引き継ぎます。

ただし、次を使用できます。

DirectoryIndex indexl.php

したがって、空のパスを使用しても、インデックス スクリプトは引き続き実行されます。

于 2013-01-29T17:39:30.277 に答える
1

Code Igniter User Guideを参照することをお勧めします。わかるでしょ:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

これは、Code Igniter ユーザーが使用する非常に典型的な書き直しです。したがって、アプリ ディレクトリのルートにある .htaccess ファイルにこれを追加すると、次のような URL を持つことができます。

example.com/my/page

それよりも

example.com/index.php/my/page
于 2013-01-29T17:41:16.577 に答える