代码之家  ›  专栏  ›  技术社区  ›  Community wiki

如何保持干净的url显示在浏览器中,而不是脏的重定向url?

  •  1
  • Community wiki  · 技术社区  · 1 年前

    为了SEO的目的,我决定为我的产品创建干净的url链接,这样客户可以更好地记住链接。我已经研究了几个小时,但还没有完全理解干净和肮脏的url重定向概念。你可能会认为在这个问题上会有更简单的文档。

    我的.htaccess文件配置如下,可以完美地获取用户键入的干净url或干净链接,如www.example.com\Category\Subcategory\,并将其重定向到.php文件,以访问MySQL表并显示产品信息。

    我想不出的是,如何在浏览器中向用户显示干净的url,而不显示脏的或重定向的url?这在.htaccess文件中完成了吗?

    为了更清楚:

    如果客户键入:www.example.com\shoes\running,.htaccess会将干净的url重定向到subcat_lookup_clean.php?c=$1&s=$2,基本上处理干净的url并查找适当的信息并动态显示。

    但现在客户看到了www.example.com\subcat_lookup_clean.php?c=$1&浏览器中的s=2美元。

    相反,我希望他们看到干净的网址www.example.com\shoes\running。

    .htaccess文件包含:

    Options +FollowSymLinks
    RewriteEngine On
    
    # do not do anything for already existing file, symbolic link or directory
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule .+ - [L]
    
    # redirect category/subcategory to lookup page
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ ./subcat_lookup_clean.php?c=$1&s=$2
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./subcat_lookup_clean.php?c=$1&s=$2 [L]
    
    1 回复  |  直到 12 年前
        1
  •  1
  •   Rodney    12 年前

    更正。htaccess下面的解决方案非常有效。

    您可以在这里演示: http://www.tiedandtrue.com

    Options +FollowSymLinks
    RewriteEngine On
    
    # if redirected to url cleaner, redirect to actual lookup file and
    # these lines will keep the clean url visible in the browser
    RewriteRule ^cat_url_cleaner.php ./cat_lookup.php [L]
    RewriteRule ^subcat_url_cleaner.php ./subcat_lookup.php [L]
    RewriteRule ^subsubcat_url_cleaner.php ./subsubcat_lookup.php [L]
    
    # do not do anything if already existing file, symbolic link or directory
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule .+ - [L]
    
    # redirect clean url (/category) for processing
    RewriteRule ^([a-zA-Z0-9_-]+)$ ./cat_url_cleaner.php?c=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ ./cat_url_cleaner.php?c=$1 [L]
    
    # redirect clean url (/category/subcategory) for processing
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ ./subcat_url_cleaner.php?c=$1&s=$2
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./subcat_url_cleaner.php?c=$1&s=$2 [L]
    
    # redirect clean url (/category/subcategory/subsubcategory) for processing
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ ./subsubcat_url_cleaner.php?c=$1&s=$2&ss=$3
    RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ ./subsubcat_url_cleaner.php?c=$1&s=$2&ss=$3 [L]