Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何使用.htaccess获取自定义(友好)url?_Apache_.htaccess - Fatal编程技术网

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等)。