.htaccess从URL中删除index.php并隐藏参数键

ali*_*ali 5 php apache .htaccess mod-rewrite seo

我有以下网址

www.example.com/index.php?tag= xxx
Run Code Online (Sandbox Code Playgroud)

我想使用.htaccess进行如下操作

www.example.com/xxx
Run Code Online (Sandbox Code Playgroud)

我用这段代码完成了:

 Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.+?)/?$ /index.php?tag=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

所以如果我输入这个URL:

www.example.com/index.php?tag=1000
Run Code Online (Sandbox Code Playgroud)

它被重定向到:

www.example.com/?tag=1000
Run Code Online (Sandbox Code Playgroud)

如果:www.example.com/1000它有效!

所以我有一个dublicate URL,这对seo来说并不好.

如何重定向www.example.com/index.php?tag=1000www.example.com/1000

anu*_*ava 0

如何重定向www.example.com/index.php?tag=1000www.example.com/1000

您可以将此规则插入到该RewriteBase行的正下方:

RewriteCond %{THE_REQUEST} /(?:index\.php)?\?tag=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L,NE]
Run Code Online (Sandbox Code Playgroud)