2

Iamはhtacess http://givehands.co.in/post.php?p=post&id=1を使用するようにURLを書き直そうとしています。http://givehands.co.in/post/1/

http://givehands.co.in/post.php?p=post&id=1しかし、それを書き換えるのではなく、URLにリダイレクトされますか?私のドメインギブハンズは私のウェブサーバーのサブディレクトリにマッピングされています。

誰かが正しい書き換えルールを手伝ってくれませんか?これは初めてです。

Options -Multiviews
RewriteEngine On    # Turn on the rewriting engine
RewriteBase /
RewriteCond %{REQUEST_URI} post/(.*)
RewriteRule post/(.*)/ http://givehands.co.in/post.php?p=post&id=$1 [L]
RewriteCond %{REQUEST_URI} post/
RewriteRule post/ http://givehands.co.in/post.php [L]
4

1 に答える 1

3

リダイレクトルールに完全なURLがあるようです。

RewriteCond %{REQUEST_URI} post/ 
RewriteRule post/ http://givehands.co.in/post.php [L]

そこに完全なURLを入れると、Apacheはブラウザを書き換えるのではなくリダイレ​​クトします: https ://httpd.apache.org/docs/current/mod/mod_rewrite.html

絶対URL
絶対URLが指定されている場合、mod_rewriteは、ホスト名が現在のホストと一致するかどうかを確認します。含まれている場合、スキームとホスト名が削除され、結果のパスがURLパスとして扱われます。それ以外の場合は、指定されたURLに対して外部リダイレクトが実行されます。外部リダイレクトを強制的に現在のホストに戻すには、以下の[R]フラグを参照してください。

givehands.co.inがホストしているドメインである場合は、次のように変更してみてください。

RewriteCond %{REQUEST_URI} post/ 
RewriteRule post/ /post.php [L]

givehands.co.inがサーバー上にない場合、または別のVirtualHostの下にある場合、URLを「書き換える」方法はありません†</ sup>、ブラウザをリダイレクトする必要があります(これが、Apacheがリードしてあなたのためにこれを行う)。

†</sup>実際には、このようなことを行うためにリバースプロキシを設定できますが、それはおそらく別の議論のトピックです:)

于 2012-04-15T20:29:03.667 に答える