apache 重定向 301 到 .php 文件扩展名

apache redirect 301 to .php file extension

对于我们的客户端项目,我们需要将所有 url 调用重定向到匹配的 .php 文件扩展名。这是为了 SEO (google) 排名。避免同时索引 url(带 *.php 和不带)

我们尝试使用 .htaccess 文件(共享主机)来做到这一点,但它似乎只适用于具有不同 url 的重定向,而不适用于仅添加 ".php" 扩展。

不同 url 作品

abc -> abc2.php

一样url不行

abc -> abc.php 

这是我们的代码示例:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.abc\.co.uk
RewriteRule (.*) http://www.abc.co.uk/ [R=301,L] 

# this doesn't work
Redirect 301 /test http://www.abc.co.uk/test.php

# this redirect works as the url is different
Redirect 301 /test-abc http://www.abc.co.uk/abc.php

我们托管 1&1 个共享主机服务器。 php 版本是 5.5

我也试过这段重定向代码,但页面现在没有加载:

RewriteRule ^(.+)\.(.*)$ http://abc.co.uk/.php [R,NC]

还注意到 url 没有文件扩展名 (.*|html) 将不会重定向

DocumentRoot 中试试这个 .htaccess:

Options +FollowSymlinks -MultiViews 
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.abc\.co\.uk$ [NC]
RewriteRule (.*) http://www.abc.co.uk/ [R=302,L] 

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ /.php [L,R=302]

这似乎是一个 302 重定向,这不是友好的 SEO。我测试了上面的内容,但它不起作用,而且,如果它起作用,我想知道 url 不需要 URL.[=10 上的 .php 扩展名会发生什么=]

基本上我们正在尝试使 301 重定向正常工作,但它似乎与包含相同 url 的规则设置冲突。 (IE abc > abc.php)

我想知道是否可能有某种 Apache 设置,甚至不太可能是 PHP 设置? 301 在我尝试的任何其他 linux 服务器上都能正常工作。