Apache 使用htaccess美化URL时是否需要添加301重定向
我使用这个简单的规则从我的站点URL中删除Apache 使用htaccess美化URL时是否需要添加301重定向,apache,.htaccess,mod-rewrite,seo,Apache,.htaccess,Mod Rewrite,Seo,我使用这个简单的规则从我的站点URL中删除index.php: RewriteRule ^.*$ ./index.php 所以http://example.com/index.php/user/me变为http://example.com/user/me 我是否需要添加[R=301]以避免从SEO角度出现“内容重复”问题?您可以添加此规则以避免: RewriteCond %{THE_REQUEST} \ /index\.php/([^\?\ ]*) RewriteRule ^ /%1 [L,R
index.php
:
RewriteRule ^.*$ ./index.php
所以http://example.com/index.php/user/me
变为http://example.com/user/me
我是否需要添加
[R=301]
以避免从SEO角度出现“内容重复”问题?您可以添加此规则以避免:
RewriteCond %{THE_REQUEST} \ /index\.php/([^\?\ ]*)
RewriteRule ^ /%1 [L,R=301]
它会将包含/index.php
的请求重定向到不包含的请求。然后,您已经拥有的规则将在内部重新编写index.php。只需包含link rel=“canonical”href=”http://example.com/ 在每一页上享受:)。
在这里阅读更多内容谢谢你的回答!不幸的是,我无法理解这条规则(在谷歌搜索了30多分钟后)。具体来说,这是在
请求
之后的“浮动”\
,第一行的最后一个\
(这是空格吗?)最后是第二行的^
。@AhmedSaoudi%{the_REQUEST}
变量是HTTP请求的第一行,看起来像这样:GET/index.php?HTTP/1.1
。所以“\
“'将匹配第一个空格。我们需要转义的最后一个空格,否则apache将假定它们都是独立的参数,而不是一个正则表达式。@AhmedSaoudi规则中的“^”只是用来匹配“任何东西”。这意味着我们不关心URI是什么,因为我们已经在%{the_REQUEST}
变量中匹配了它