Apache 如何使用.htaccess获取自定义(友好)url?
假设我有一个像Apache 如何使用.htaccess获取自定义(友好)url?,apache,.htaccess,Apache,.htaccess,假设我有一个像http://abc.com/index.php?cat=37&subsubcat=0&subcat=199&page=product_detail&product_id=1661 我可以使用.htaccess将其重定向/重写到类似http://abc.com/simplerName 我在上找到了不少帖子,要求提供友好的URL,但我想更进一步,即我想指定子文件夹的名称(在上面的示例中,它是“simplerName”)。现在我有10个我想定制的URL,我完全可以为每个URL指定10条
http://abc.com/index.php?cat=37&subsubcat=0&subcat=199&page=product_detail&product_id=1661
我可以使用.htaccess
将其重定向/重写到类似http://abc.com/simplerName
我在上找到了不少帖子,要求提供友好的URL,但我想更进一步,即我想指定子文件夹的名称(在上面的示例中,它是“simplerName
”)。现在我有10个我想定制的URL,我完全可以为每个URL指定10条规则
但我不知道如何使用
.htaccess
实现这一点。这可能吗?因为您正在使用不存在的“子冲突”来指示哪个规则应该匹配什么,这将是非常直接的:
你想要这样的东西:
RewriteEngine On
RewriteRule ^/?category/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/ /index.php?cat=$1&subsubcat=$2&subcat=$3&page=$4&product_id=$5 [L]
RewriteRule ^/?something-else/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/ /index.php?something=$1&subsub=$2&sub=$3&page=$4&something_id=$5 [L]
等等
然后,您需要将提供的所有URL更改为外观友好的URL,而不是带有查询字符串的URL。是的,您当然可以使用
.htaccess
重定向/重写URL。你可以通过阅读来实现这一点。我完全知道.htaccess可以用来重写URL。我想知道的是指定目标子文件夹,而不仅仅是使其url友好。我已经讨论了这里的其他问题,其中一些问题很接近,但不是我所问的问题的重复。您到底希望simplerName
成为什么<代码>/subfolder/37/0/199/product\u detail/1661/?我就是这么简单的名字。因此,重定向一个类似于的url。对于我需要执行此操作的其他9个URL,我想指定子文件夹是什么。注意,子文件夹不存在,只是为了友好。看起来很简单。。。这个[L]是做什么的?我现在就测试一下……谢谢你,Jon。@Ray[L]
标志告诉重写引擎停止当前迭代的重写过程。虽然规则将循环,但如果应用了重写规则
,它将停止当前迭代的重写。。。非常有帮助!所以用我的例子来测试一下,这就是我应该使用的吗?重写引擎时重写规则^/?SimpleName/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)//index.php?cat=37&subsubsubcat=0&subcat=199&page=product\u detail&product\u id=1661[L]似乎不起作用…@Ray我将该规则放在一个空白的htaccess文件中,然后转到http://localhost/simplerName/1/2/3/4/5/
它为我提供了/index.php?cat=37&subsubcat=0&subcat=199&page=product\u detail&product\u id=1661的内容。请注意,1、2、3、4和5从未进入重写的查询字符串,因为您的规则不使用反向引用($1、$2、$3等)。