2017-02-03 16 views
1

次私はいくつかのルールでのhtaccessファイルを持っている、と私は今.htaccess削除するRewriteRule?ホスト名

がwww.mydomain.com/?generations/anythingようなURLの一部を取り除き、別のルールを追加したい

(と何のMEAをwww.mydomain.com/anything

なりns他の文字)。私はそれなしで動作させることができますが、私は一致する/削除することはできません?私が試した:

1が失敗した:

RewriteRule ^\?generations/(.*)$ /$1 [L] 

2に失敗しました:

RewriteCond %{QUERY_STRING} ^generations/(.*)$ 
RewriteRule ^generations/(.*)$ $1 [L] 

3が失敗した:

RewriteCond %{QUERY_STRING} ^generations/(.*)$ 
RewriteRule ^([^?]*)?generations/(.*)$ $2%1 [L] 

4が失敗した:

RewriteRule ^([^?]*)?generations/(.*)$ $1$2 [QSA,L] 

誰かが実際のルールを作成し、上記の3回目の試みがうまくいかない理由を説明することはできますか?あなたは3であり得ているが、クエリ文字列がするRewriteRuleの試合中に含まれていません...

答えて

1

を私は潜在的に最初の二つの問題を見ることができますが、第三及び第四の作業をする必要があります。

RewriteCond %{QUERY_STRING} ^generations/(.*)$ 
RewriteRule ^$ %1? [L] 

をしかし、私が思うラウンドブラウザで訪れているURLであることを/何をしたい場合にも、それを間違った方法がありますので、あなただけの空の文字列にマッチします。実際にはこれだけです:

RewriteRule ^(.*)$ ?generations/$1 [L] 
+0

最初のコードブロックについて説明してください。^$は何をするのですか?あなたの2番目のブロックでは、パターンと置換文字列が逆になっていますか?クエリ文字列が別々に一致しているので、ちょうどmydomain.com/のように – TSG

+0

最初のコードブロック、^ $はちょうど、空の文字列に一致すると言います。あなたは、人々が実際にあなたがそれを他の方法でラウンドを行う必要があり、その後mydomain.com/?generations/anything取得するmydomain.com/anythingを訪問したい場合には、第2には、ポイントが、あります。そう、あなたがそれをやっていたやり方を逆転させました。 – SuperDuperApps

+0

しかし、私はURLから「?世代/」を削除したかったです。それはあなたの答えが逆転していることを意味しますか? – TSG