.htaccess去除URL中的index.php并隐藏参数键

6

我有以下URL

www.example.com/index.php?tag= xxx

我想使用 .htaccess 让它变成以下这样。
www.example.com/xxx

我用以下代码完成了它:

 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]

如果我输入这个URL:

www.example.com/index.php?tag=1000

将其重定向到:

www.example.com/?tag=1000

如果访问 www.example.com/1000 可以正常显示,则说明该链接有效!

因此,我有重复的URL,这对SEO并不好。

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

2个回答

1
使用以下代码来编写 .htaccess 文件。
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?key=$1 [L,QSA]

你的index.php代码将会是:
<?php 
echo $_REQUEST['key'];  
?>

然后调用http://sitename.com/1000

输出将为:1000。


0
如何将 www.example.com/index.php?tag=1000 重定向到 www.example.com/1000
你可以在 RewriteBase 行下面插入这个规则:
RewriteCond %{THE_REQUEST} /(?:index\.php)?\?tag=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L,NE]

我们不能再使用 $_GET['get'] 访问标签了,如何解决? - unobatbayar
OP现有的内部重写规则目标是index.php?tag=$1,可以获取$_GET['get']'] - anubhava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接