基于动态URL的htaccess

时间:2016-12-04 07:38:36

标签: php .htaccess

我坚持网站URL的情况。我在这里使用电子商务网站来描述它。

  

产品类别

Women ------> womens-clothing (sub-category)
                     ---------> womens-top (child)
                     ---------> womens-dress (child)

public_html是根目录。我想创建这样的网址 - >

案例1 - > 如果用户想要查看子类别下的所有产品(例如 Womens-clothing )。然后我希望网址为www.website.com/womens-clothing/(may be some parameters here)

案例2 - > 如果用户想要查看特定孩子下的所有产品(例如{em> womens-top ,则womens-clothing -category)然后我希望URL为www.website.com/womens-clothing/womens-tops/(may be some parameters here)

所以我的问题是我是否需要为其父类别下的每个sub-categorieschild-categories创建一个目录,或者可以在任何单个页面中使用HTACCESS创建目录而无需创建目录。 ??

2 个答案:

答案 0 :(得分:0)

通过创建目录(虽然有效)这样做几乎是愚蠢的,因为它会耗费大量时间并且难以管理。

是的! .htaccess(关注apache)是解决问题的正确选择。

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ index.php?page=$1 [NC,L] 

此代码段是.htaccess文件如何用于此目的的一个很好的示例。

然后,在index.php文件中,您可以按$_GET['page]获取网址


所以,请在页面上说出来; www.website.com/womens-clothing/womens-tops/

$_GET['page]将返回womens-clothing/womens-tops/



然后,只需$url = explode('/', $_GET['page]);

$url[0] = womens-clothing

$url[1] = womens-tops

这样做会为您提供参数。

另外,使用if (isset($url[NUM])) {},这样就不会出现超出范围索引的错误。

无论如何都是它的基础。

说明

所有这一切实际上都是从网址隐藏index.php,并将网址中的每个 '目录' 作为get请求提供。< / p>

这称为URL Rewriting,涉及apaches mod_rewrite函数。

答案 1 :(得分:0)

不,一点也不!每个URL创建一个目录既不是动态的,也不适用于您的站点增长时。很快你的网站维护就会变得无法控制。

解决您的问题的方法是使用 URL重写(Apache Web服务器的mod_rewrite)以及.htaccess&amp;创建有点 URL别名

请在此处查看以下问题:

Generate URL Alias?? in PHP

How do I create a people-friendly URL using an alias and ID from database?