如何使用htaccess删除丑陋的GET参数?

时间:2012-09-11 14:00:23

标签: apache mod-rewrite

我有一个PHP网站,它使用GET变量来确定它应该做什么......

例如/index.php?s=about&p=2

似乎我应该能够使用重写规则更改此内容,因此我可以使用以下网址:

/about/2

我怎样才能获得这种行为?

1 个答案:

答案 0 :(得分:1)

  1. 您需要将所有链接更改为/about/2
  2. 您需要将所有相对链接调整为绝对链接或将其添加到所有网页的标题中:

    <base href="/">
    
  3. 将这些规则添加到文档根目录中的htaccess文件中,将漂亮的链接更改回丑陋的链接:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/([^/]+)/? /index.php?s=$1&p=$2 [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/? /index.php?s=$1 [L]
    
  4. 因此,搜索引擎可以重新索引您的网页,您需要将旧的丑陋网站重定向到漂亮的网页,方法是将其添加到同一个htaccess文件中:

    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=([^&]+)&p=([^&]+)
    RewriteRule ^index.php$ /%1/%2 [L,R=301]
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?s=([^&]+)
    RewriteRule ^index.php$ /%1 [L,R=301]