0

我想重写一个简单的 url,但不产生谷歌错误

此代码有效:

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.

我知道 R=301 标志必须与 http:// 一起使用

但是当我尝试时,网址没有重写

4

1 回答 1

0

Apache 试图猜测一个路径是 URI 路径还是文件路径,但它猜错了。当您在内部重写时,文件路径非常好,因为它都是服务器内部的。但是当您进行重定向时,apache 错误地猜测您的目标 (the index.php?eID=) 是一个文件路径,并且它被标记为由 mod_alias 作为重定向处理。到重定向发生时,它的格式错误为文件路径而不是 URI 路径。这就是为什么您在/var/www/mysite/重定向时会有所收获。

添加 aRewriteBase以提供相对 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 回答