0

単純な URL を書き換えたいが、Google エラーが発生しない

このコードは機能します:

RewriteEngine on
RewriteRule  lieu/([0-9]+).* index.php?com=location&lID=$1 [L]
RewriteRule  evenement/([0-9]+).* index.php?eID=$1 [L]

しかし、SEO用にR=301フラグを追加したい

[R=301,L] を追加すると:

The requested URL /var/www/mysite/index.php was not found on this server.

http:// で R=301 フラグを使用する必要があることはわかっています。

しかし、私が試してみると、URLは書き換えられません

4

1 に答える 1

0

Apache はパスが URI パスかファイル パスかを推測しようとしますが、推測は間違っています。内部で書き換えている場合、ファイルパスはすべてサーバーの内部にあるため、まったく問題ありません。しかし、リダイレクトしているとき、Apache はターゲット ( ) がファイル パスであると誤って推測し、index.php?eID=mod_alias によってリダイレクトとして処理されるようにフラグが立てられます。リダイレクトが発生するまでに、URI パスではなくファイル パスとして不正な形式になっています。そのため、/var/www/mysite/リダイレクト時にビットを取得しています。

を追加しRewriteBaseて相対 URI の URI ベースを提供するか、ターゲットを絶対 URI にします。

RewriteEngine On
RewriteBase /
RewriteRule  lieu/([0-9]+).* index.php?com=location&lID=$1 [R=301,L]
RewriteRule  evenement/([0-9]+).* index.php?eID=$1 [L,R=301]

また

RewriteEngine on
RewriteRule  lieu/([0-9]+).* /index.php?com=location&lID=$1 [L,R=301]
RewriteRule  evenement/([0-9]+).* /index.php?eID=$1 [L,R=301]
于 2012-11-09T00:22:50.963 に答える