2017-05-03 32 views
1

私のページをリダイレクトしようとすると、何も起こりません。誰かがforum.example.com/forumdisplay.php?fid=1と入力しようとすると、私はそれらがforum.example.com/forum-1.phpにリダイレクトされるようにします。私は.htaccessに新しいですし、それを把握できませんでした。.htaccess Rewriteruleがリダイレクトされた301をリダイレクトしない

.htaccessファイル:

Options -MultiViews 
RewriteEngine on 
Redirect 301 /forumdisplay.php?fid=([0-9]+).php /forum-$1.php 
RewriteRule ^forum-([0-9]+)\.php$ forumdisplay.php?fid=$1 [L,QSA] 

すべてのヘルプは理解されるであろう。

答えて

1

Redirect(mod_alias)とRewriteRule(mod_rewrite)は2つの異なるモジュールに属します。このためにのみmod_rewriteを使用する必要があります。次のようなものを試してみてください:

Options -MultiViews 

RewriteEngine on 

# Redirect direct requests for the "real" URL 
RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
RewriteCond %{QUERY_STRING} ^fid=([0-9]+) 
RewriteRule ^forumdisplay\.php$ /forum-%1.php? [R=301,L] 

# Internally rewrite back to the "real" URL 
RewriteRule ^forum-([0-9]+)\.php$ forumdisplay.php?fid=$1 [L,QSA] 

Redirectは、いずれかの正規表現を使用しません。)

UPDATE:私は最初RewriteRule置換(すなわちの終わりに?を追加しました/forum-%1.php?)。空の照会ストリングを指定することにより、要求から照会ストリングを除去します。また、Apache 2.4でQSDフラグを使用することもできます。

+1

ありがとうございます。しかし、urlは/forum-2.php?fid=2のように表示されます。 ?fid = 2の部分なしで/forum-2.phpのように表示することは可能ですか? – Emrats

+0

ああ、申し訳ありません、私はそれについて忘れていました...私は私の答えを更新しました。 – MrWhite

関連する問題