URL重写如何添加额外条件

时间:2015-02-13 04:42:58

标签: .htaccess mod-rewrite redirect url-rewriting seo

我尝试将我的网址网址从example.com重定向到www.example.com。 通过使用下面的代码,它可以部分工作;所有以example.com开头的网站的网址都会重定向到www.example.com

然而,在使用" index.php?slug="在网站网址:example.com/index.php?slug=About中,网址被重定向到www.example.com/About,而不是重定向到www.example.com/index.php?slug=About

因此,结果是两个网址(www.example.com/Aboutwww.example.com/index.php?slug=About)都正常工作并显示相同的结果。

知道如何处理它,以避免搜索引擎上的重复内容?我应该在这里添加哪些条件?

感谢。

这是htaccess文件:

<IfModule mod_rewrite.c>
RewriteEngine on

# htaccess custom error messages
ErrorDocument 400 "Ooops - Bad request!"
ErrorDocument 403 "Strictly forbidden.."
ErrorDocument 401 "Speak friend and enter"
ErrorDocument 500 "Server gone wild.."

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?slug=$1 [L,QSA]

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
</IfModule>

1 个答案:

答案 0 :(得分:2)

# htaccess custom error messages
ErrorDocument 400 "Ooops - Bad request!"
ErrorDocument 403 "Strictly forbidden.."
ErrorDocument 401 "Speak friend and enter"
ErrorDocument 500 "Server gone wild.."

<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?slug=$1 [L,QSA]
</IfModule>

在进行任何index.php重写之前,您应该执行 www -check。

此外(这只是对代码的增强/修复),您不应该将ErrorDocument调整为mod_rewrite,因此它已被移出块外。您还指定了RewriteEngine on两次。您只需要指定一次。