htaccess重写不重定向原始URL到seo友好

时间:2013-12-31 11:34:42

标签: php .htaccess

我已经重写了htacess规则来创建seo友好的网址。

我已成功将我的网址从/abc.php?lType=x更改为/abc/x/

但是,当我打开/abc.php?lType=x时,它仍然有效..我想将其重定向到/abc/x/  避免重复的页面。

Options +FollowSymLinks
RewriteEngine On 

RewriteRule ^abc.php?lType=([a-zA-Z0-9]+) /abc/$1 [R=301,L]

RewriteRule ^abc/([a-zA-Z0-9]+)/?$ abc.php?lType=$1 [L,QSA]

帮助将不胜感激。

由于

编辑正在使用localhost

2 个答案:

答案 0 :(得分:0)

这会有帮助吗? :)

Options +FollowSymLinks
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^abc/([a-zA-Z0-9]+)/?$ abc.php?lType=$1 [L,QSA]

我认为不需要第一个重写规则......这就是错误。我没有检查我的答案,并从手写,所以必须检查:)。 最好的问候!

答案 1 :(得分:0)

您无法在重写规则中与查询字符串匹配,因此您的模式^abc.php?lType=([a-zA-Z0-9]+)将始终失败。 ?是正则表达式保留字符,表示前一个字符中的一个或不存在。在这种情况下,您希望与%{THE_REQUEST}匹配。

RewriteCond %{THE_REQUEST} \ /+abc.php\?lType=([a-zA-Z0-9]+)
RewriteRule ^ /abc/%1? [R=301,L]