0

この非常に基本的な書き換えルールがありますが、何を試しても、エラー500が発生します。

RewriteEngine On
RewriteRule ^folder/(.*) /folder/index.php?Alias=$1 [L]

私のhttpd.confファイルには次の内容が含まれています:(私には問題ないようです)

<Directory "/var/www/html">
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
   <IfModule mod_suphp.c>
        suPHP_Engine On
        suPHP_UserGroup webapps webapps
    SetEnv PHP_INI_SCAN_DIR
   </IfModule>
</Directory>

何がうまくいかないかについての提案はありますか?$また、書き換えルールの最後に追加しようとしました。

4

1 に答える 1

1

URIの変更が停止するか、内部リダイレクト制限に達して500エラーがスローされるまで、書き換えエンジンは繰り返しループします。ルールのターゲットURI/folder/index.phpは書き換えエンジンに戻され、同じルールの正規表現がそれに一致し^folder/(.*)ます。したがって、ループを防ぐために何らかの条件を追加する必要があります。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder/index\.php
RewriteRule ^folder/(.*) /folder/index.php?Alias=$1 [L]

これは単純で、すでに。で始まっている場合はルールを適用しません/folder/index\.php。次のことも試すことができます。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^folder/(.*) /folder/index.php?Alias=$1 [L]

これは、条件の制限が少し緩和されます。要求されたURIが既存のファイルまたはディレクトリにマップされていない場合にのみルールが適用されます。これは、移動しようとしたときにディレクトリまたはファイルがなく、/folder/blahblahindex.phpblahblah介してルーティングすることを前提としています。

于 2013-01-15T13:14:34.243 に答える