0

以下は、私の .htaccess ファイルの一部です。Apache から次の動作が必要です (現在、サイトは localhost にありますが、それは問題ではありませんよね?):

要求されたリソースがそれ以外の場合

{site_url}/core 

また

{site_url}/login 

お気に入り

{site_url}/pseudo/path/name

提供されるリソースは

{site_url}/site/pseudo/path/name

それ以外の場合、提供される URL は {site_url}/core または {site_url}/login、つまり要求されたものである必要があります。

.htaccess ファイルは次のとおりです。

<IfModule mod_alias.c>

    AliasMatch ^/(?!core|login)(/?.*)$ /site/$2
    Header add X-Enabled mod_alias

</IfModule>

しかし、これは機能していないようで、エラーが返されます。私は正規表現にあまり詳しくなく、これらを学ぼうとしています。したがって、この表現から私が推測したことは次のとおりです。

'/' の後の式、つまり、site_url の後の URI が core または login (?!core|login)) と一致せず、その後にサブフォルダーを含む何かが続く場合 (/?.*)$ オプションのスラッシュ、およびエイリアスを /site/ (2 番目の括弧で一致したもの) に設定します。

モジュールは機能しています。ヘッダーの追加部分のみを使用して確認しましたが、問題は正規表現です。

助けてください。

4

1 に答える 1

2

先頭の^を省略します。あなたが持っている正規表現は一致しますが、テキストは/で始まる必要があることを伝えているため、一致/pseudo/path/nameしません。{site_url}/pseudo/path/name

また、正規表現は次のようなものを除外しているため、注意してください{site_url}/corelcoreで始まる他のディレクトリがない限り、おそらく問題にはならないでしょうが、本当に{site_url}/coreor以外のものと一致させたい場合は、次の{site_url}/login正規表現を使用します。

/(?!core$|login$)(/?.*)$
于 2013-06-29T00:36:17.797 に答える