2017-02-23 5 views
0

私は、検索エンジンフレンドリーなURLの目的のために.htaccessファイル内のコードを書かれている:あなたが見ての通り、.htaccessに最適なRegexは、 '?'以外のものにマッチするものは何ですか?または「/」

RewriteRule ^games/(.*\S)$ helper/Games.php?p=$1 [L] 

helper/Games.php?p=

からgames/書き換えた後に何もしかし、私は$_GET['p']をしたくありません魔女には?または/が含まれています。 URLの下に例えば

は私のルールによって書き換えすべきではない:

example.com/games/Test?Test 
example.com/games/Test/Test 

正しい正規表現を見つけるために私を導いてください。おかげさまで

答えて

0

:クエリ文字列以来

RewriteRule ^games/([^/]*[^\s/])$ helper/Games.php?p=$1 [L]

は試合の一部ではない、あなたが最初にしたいと思います:

RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^test/([^/]+)$ helper/Gampes.php?p=$1 [L] 
0

ワイルドカード.ではなく、望ましくない値のセットを無効にするだけです。だから、:URLを書き換える前に、空のQUERY_STRING照合する必要が

RewriteCond %{QUERY_STRING} ^$

+0

Tnx。スラッシュはうまくいきます。しかし、まだ 'example.com/games/Test?Test'を書いています:( –

+0

私は、私の頭の上からApacheの正規表現パーサーの仕組みを思い出しませんが、これは大丈夫だと思いました!とにかく、バックスラッシュ '\\'を疑問符の前に付けてください –

+0

?はRewriteRuleのパターンの一部ではありませんが、RewriteCondを使用しないと削除するオプションはありません – starkeen

関連する問題