3

htaccess の書き方を学び始めたところです。このページから次のコードを取得しました。これにより、すべてが index.php ファイルにリダイレクトされます。

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    RewriteRule    (.*) public/    [L]
</IfModule>

と を除くすべての行を理解しました.それらが何を意味するのか.私にはそれは正規表現のように見えます:)..リダイレクトのルールを書くため^$ public/ [L](.*) public/ [L]RewriteRule が使用されることは知っています.しかし、記号 $ ,(,),., * など.示す ?。
これらの行を .htaccess に入れると、次のエラーが発生しました

ここに画像の説明を入力

しかし、4行目にコメントすると、動作しています..つまり、次のコードが動作しています

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    public/    [L]
    #RewriteRule    (.*) public/    [L]
</IfModule

では、ここで何が問題なのですか?

4

2 に答える 2

1

これは最初の質問に対する回答です。2 番目の質問については、詳細情報を提供してください ( からのログ エントリなど/var/log/apache2/error.log) 。

^文字列の先頭に一致

$文字列の末尾に一致

^$空の文字列に一致します

.任意の文字に一致

*前の一致の 0 から任意の回数の発生を許可します

()後で参照できるグループをマークします

(.*)任意の数の文字に一致します

于 2012-11-20T18:54:17.657 に答える
1

私はあなたが吹いたような書き換えループの中にいると思います:
abc.com/anything を abc.com/public に書き換え、/public を /public に書き換えています。
おそらく、どのURLを書き換える必要があるかを指定する必要があります。(リクエストを制限してください)このように:

RewriteEngine on
RewriteRule    ^$    public/    [NC,L]
RewriteRule    ^index.php(.*)$ public/$1    [NC,L]

index.php?requests を public/?requests に書き換えます

于 2012-11-20T18:54:49.767 に答える