Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
.htaccess-多个参数_.htaccess - Fatal编程技术网

.htaccess-多个参数

.htaccess-多个参数,.htaccess,.htaccess,我一直在看,这里所有的问题都和我一样:如何重写多个参数?我知道该怎么做,但对我来说似乎不是很好 我不希望我的链接看起来像这样:link.dk/profil/2/overview 我的.htaccess如下所示: #profil.php?id=? to profil/? RewriteRule ^profil/(.*)$ profil.php?id=$1 [L] RewriteRule ^profil/(.*)/(.*)$ profil.php?id=$1&do=$2 [L] 它必须能够

我一直在看,这里所有的问题都和我一样:如何重写多个参数?我知道该怎么做,但对我来说似乎不是很好

我不希望我的链接看起来像这样:link.dk/profil/2/overview

我的.htaccess如下所示:

#profil.php?id=? to profil/?
RewriteRule ^profil/(.*)$ profil.php?id=$1 [L]
RewriteRule ^profil/(.*)/(.*)$ profil.php?id=$1&do=$2 [L]
它必须能够在不使用第三个参数的情况下访问/profil/2。这就是为什么我有两行。我不知道这样做是否正确

/profil/2运行良好,已经运行了一段时间。所以在这里不用担心。但是我不能理解第三个参数

我还在.htaccess文件中有两个:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/
RewriteRule ^(.*)index\.php$ /$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
在我写前两篇之前


如果我只使用带有两个参数的一个,它就工作了。但是它不能与/profil/2ofc一起工作。如果我用profil.php?id=2&do=overview输入url,我就可以访问该页面。

了解我自己:

RewriteRule ^profil/([^/]+)$ profil.php?id=$1
RewriteRule ^profil/([^/]+)/([a-z]+)$ profil.php?id=$1&do=$2

.*似乎有点不精确和不稳定:-)

*
定义得很好。“
*
”是一个贪婪的匹配——也就是说,它将尽可能长时间地匹配。对于这种类型的匹配,您可以使用非贪婪匹配
*?
,例如
(.*)/
意味着匹配任何charcher序列,但首先停止/或者您可以更改规则的顺序,但您的解决方案要优雅得多。