apache redirect 301 to .php文件扩展

时间:2015-03-11 16:47:53

标签: apache .htaccess

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

我们尝试使用.htaccess文件(共享主机)执行此操作,但它似乎只适用于具有不同网址的重定向,而不适用于仅添加" .php"扩展

不同的网址

abc -> abc2.php

相同的网址无效

abc -> abc.php 

这是我们的代码示例:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.abc\.co.uk
RewriteRule (.*) http://www.abc.co.uk/$1 [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/$1.php [R,NC]

还注意到没有文件扩展名的网址(。* | html)不会重定向

2 个答案:

答案 0 :(得分:0)

DocumentRoot中尝试此.htaccess:

Options +FollowSymlinks -MultiViews 
RewriteEngine on

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

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

答案 1 :(得分:0)

这似乎是一个302重新直接,这不是SEO freindly。我测试了上面的内容并且它不起作用,如果它确实如此,我想知道在URL上不需要.php扩展名的url会发生什么。

基本上我们试图让301重新直接工作,但它似乎与包含相同网址的规则相冲突。 (IE abc> abc.php)

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