我现在正在使用此.htaccess
文件。它只会将网址从www.example.com/?page=home
更改为www.example.com/home
。
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^([\w-]+)?$ index.php?page=$1 [L]
RewriteRule ^([\w-]+)/?$ index.php?page=$1 [L]
我想添加更多$_GET
参数,例如www.example.com/home/parameter1/value1/
。
并且最好能无限期地完成这些参数。
答案 0 :(得分:1)
单独使用.htaccess
无法“无限期”执行此操作。您需要决定参数的最大数量(N)并按顺序为每个参数编写一个指令:N,N-1,N-2,... 1.但是,您也是受支持的反向引用数量限制。即。只需$1
到$9
,您就可以使用在网址路径中包含参数名称的方法限制为4个参数。
例如:
# 3 additional parameters
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?page=$1&$2=$3&$4=$5&$6=$7 [L]
# 2 additional parameters
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?page=$1&$2=$3&$4=$5 [L]
# 1 additional parameter
RewriteRule ^([\w-]+)/([\w-]+)/([\w-]+)/?$ index.php?page=$1&$2=$3 [L]
# No parameters (just the page)
RewriteRule ^([\w-]+)/?$ index.php?page=$1 [L]
这些都允许使用可选的尾部斜杠(如当前示例中所示)。但是,最好决定是否需要尾部斜杠并选择其中一个斜杠。使用尾部斜杠可选只会促进重复内容。
在我看来,这个网址模式也有点过于“一般化”。通常更具体,避免在URL中包含参数 name 。例如:example.com/home/value1/value2/value2
- 参数名称(param1
,param2
等)将在RewriteRule
替换中进行硬编码。这也可以让你有两倍的参数。
RewriteRule ^([\w-]+)?$ index.php?page=$1 [L] RewriteRule ^([\w-]+)/?$ index.php?page=$1 [L]
这里你不需要两个指令。 (正确设置DirectoryIndex
。)