0

私はページを持っています:

http://domain.com/index.php

しかし奇妙なことに、以下urlsも機能し、同じページをレンダリングしています:

http://domain.com/index.php/abcd
http://domain.com/index.php/gefe

等々..

明らかに、それは台無しにされた構成のようregexです。しかし奇妙なことに、ファイルを削除しても URL は機能し続け.htaccessます。

今、私はこれを自分の構成のせいにすることしかできませんapacheが、すべてが期待どおりのようです。

私のApache設定:

<VirtualHost *:80>
    # Server name
    ServerName domain.com
    # Document root
    DocumentRoot /path/to/source

    <Directory />
        Options FollowSymLinks
    </Directory>
    <Directory /path/to/source>
        AllowOverride All
        Options Indexes FollowSymLinks MultiViews
        Order allow,deny
        allow from all
    </Directory>

    LogLevel error

    # Logs
    ErrorLog ${APACHE_LOG_DIR}/domain_error.log
    CustomLog ${APACHE_LOG_DIR}/domain_access.log combined

    RewriteMap  lc int:tolower
</VirtualHost>

誰でも間違いを指摘できますか?

4

2 に答える 2

1

これは PATH_INFO と呼ばれます。Apache は URL を左から右にスキャンします。一致するディレクトリが見つかる限り、ディレクトリがなくなるか、一致するスクリプトに到達するまで、ドキュメント ルートをたどり続けます。その後、余分な「パス」情報は PATH_INFO になります。

/a/b/c の実際に存在するディレクトリ構造に「foo.php」というスクリプトを含むサイトがあるとします。

http://example.com/a/b/c/foo.php

は有効な URL です。

その場合、

http://example.com/a/b/c/foo.php/bar/baz/bip/bop/boop
                                ^^^^^^^^^^^^^^^^^^^^^-- path info

読んでください:http://httpd.apache.org/docs/current/mod/core.html#acceptpathinfo

于 2013-06-04T17:57:48.297 に答える
1

このような URL への追加は完全に正当です。追加のパスは、.php 内の PHP コードで使用できます$_SERVER['PATH_INFO']

と言うのとそれほど違いはありませんがhttp://domain.com/index.php?ab=cd、URL にさらに情報を追加する方法が異なるだけです。

于 2013-06-04T17:55:56.800 に答える