1

.htaccess ファイルに複数の RewriteRules を設定したいと考えています。

# Enable Rewriting
RewriteEngine on

# Rewrite profile urls
# Input: /user<userId>
# Output: /profile.php?id=<userId>
RewriteRule ^user(\d+)/?$ profile.php?id=$1 [L]

# Rewrite by default to redirect.php
RewriteRule .* redirect.php

すべてのリクエストはredirect.phpを指します

最初の RewriteRule に [L] フラグを設定すると、ルール セットの処理が停止するのではないかと考えました。

4

3 に答える 3

1

他の URL を/redirect.php/user<userId>に書き換えたい場合は、次の 2 つの設定ディレクティブを試すことができます。/profile.php?id=<userId>

RewriteEngine on

RewriteRule ^user([a-zA-Z0-9_-]+)/?$ /profile.php?id=$1 [L]

RewriteRule .* /redirect.php

また:

RewriteEngine on

RewriteRule ^user([a-zA-Z0-9_-]+)/?$ /profile.php?id=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /redirect.php
于 2013-05-04T18:31:20.450 に答える
0

[L] フラグは現在のイテレーションでのみ処理を停止しますが、mod_rewrite はパスが一定でなくなるまでプロセスを繰り返します。あなたの場合、このルールを使用できると思います:

RewriteRule ^user\d+$ profile.php

RewriteCond %{REQUEST_URI} !profile.php
RewriteRule ^.*$ redirect.php
于 2014-06-04T12:04:44.840 に答える