对于我们的客户端项目,我们需要将所有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)不会重定向
答案 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工作。