2016-06-22 17 views
3

URLをregexを.htaccessファイルで使用して照合しようとしています。Apache RewriteRule - 文字列の開始に一致できません

「$」を使用して文字列の最後に一致することはできますが、「^」を使用して文字列の先頭に一致させようとすると、RewriteRuleが機能しなくなります。

は、ここに私の.htaccessファイルです:動作します "^" 正規表現がなければ

RewriteEngine On 
RewriteBase "/" 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule "^example-url$" "index.php" 

、あまりにもずさんです。私はこれを数時間は手にしましたが、私が試したすべての正規表現のテスターで動作しているこの非常に基本的な正規表現以来、他に何を試していいのか分かりません。

私の最高の推測atmは文字列の実際の開始点と何か関係がありますが、これをテストする方法はわかりません。トップレベルのドメイン名の直後に "/"

EDIT: が行われたすべての私の問題は、離れて行くのhtmlフォルダに.htaccessファイルを移動、上記の.htaccessファイルは現在正常に動作します。 @Riad Loukiliと@ P0lT10nのおかげですごく感謝しています。

私の問題は、仮想ディレクトリの設定方法に起因すると推測しています。

答えて

3

わからないが、私はThis .htaccess tester上でそれを試してみましたし、それが働いた

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^example-url$ index.php 

を試してみてください。

考えられる説明:あなたは既にRewriteBaseを指定しています。正規表現で/を使用してURLを開始する必要はありません。

+0

彼はすでに 'RewriteBase'を定義しているので、彼は'/example'ではなく '/ example'とマッチさせようとしています。 – matiaslauriti

+0

@Riad Loukili返事をありがとう。ちょうどそれを試みましたが、ルールが全くないように行動するようです。 – Andrew

+0

@ P0lT10n私は 'RewriteRule'の経験があまりないので、間違っているかもしれません。私は、 'RewriteBase'コマンドが外部パスではなく内部パスに影響すると考えましたか?それは両方に影響するのですか、私はこれを誤解していますか? – Andrew

関連する問題