で例外を作成することができます。どのように私は友好的なURLを使用したいの.htaccess
RewriteRule ^([A-Za-z0-9_-]+)/$ pages/$1.php [QSA,L]
しかし同時に、私は/forum/folder
が.htaccess
ファイルにそのルールから除外することにしたいです。
どうすればいいですか?
で例外を作成することができます。どのように私は友好的なURLを使用したいの.htaccess
RewriteRule ^([A-Za-z0-9_-]+)/$ pages/$1.php [QSA,L]
しかし同時に、私は/forum/folder
が.htaccess
ファイルにそのルールから除外することにしたいです。
どうすればいいですか?
RewriteRule ^([A-Za-z0-9_-]+)/$ pages/$1.php [QSA,L]
...私は
/forum/folder
が
パターンがスラッシュを許可していませんので、ごRewriteRule
パターン(すなわち。^([A-Za-z0-9_-]+)/$
)がすでに、URLパス/forum/folder
を除外を除外することにしたいです(ディレクトリ区切り文字)をURLパスの途中に配置します。終わりにのみ。
したがって、/forum/folder
がまだルーティングされている場合、何か他のものがです。このサブディレクトリに.htaccess
がある場合(物理ディレクトリであると仮定して)、mod_rewriteを使用すると、競合が発生する可能性があります。
はそうでない場合は、例外を作るためにいくつかの方法があります。
#1 - すべてのファイルとフォルダを除外:あなたは(具体的/forum/folder
を想定して書き換えられるから、すべてのファイルとフォルダを除外したい場合物理ディレクトリの場合)、具体的にこれを確認し、URLパスがファイルまたはディレクトリにマップされていない場合にのみRewriteRule
を処理することができます。たとえば:リクエストからクエリ文字列がデフォルトで追加されるので、
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/$ pages/$1.php [L]
QSA
フラグは、ここでは必要ありません。 のクエリ文字列を指定していて、これをリクエストのクエリ文字列とマージする必要がある場合のみ、このフラグが必要です。そして、Deadooshkaがコメントで述べたように、\w
は[A-Za-z0-9_]
の短縮形文字なので、これは正規表現を少し簡略化します。
#2 - ルールを除外:あなたが処理を除外し、単に停止するパスと一致するファイルの開始時にルールを使用してください。たとえば、次のように
RewriteRule ^forum/folder - [L]
要求されたURLが/forum/folder
で始まる場合は、ここで停止し、さらにルールを処理しません。
#3 - 否定条件:は、ルール自体に否定 conditon(RewriteCond
ディレクティブ)を含めます。例:要求されたURLが/forum/folder
で起動しない場合
RewriteCond %{REQUEST_URI} !^/forum/folder
RewriteRule ^([\w-]+)/$ pages/$1.php [L]
は、これが唯一のRewriteRule
を処理します。CondPatternの接頭辞!
は、正規表現を無効にします。
#4 - RewriteRule
パターンで否定先読み:あなただけ、あなたはRewriteRule
パターンに否定先読みを使用することができますが、このルールから除外する一つのルールと1つのURLを持っている場合(正規表現)。例えば、上記のディレクティブでURL /forum
を除外するために:
RewriteRule ^((?!forum)[\w-]+)/$ pages/$1.php [L]
(?!forum)
は否定先読みです。
'A-Za-z0-9_'は' \ w' – Deadooshka