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
Php URL中斜杠后的文本作为参数_Php_.htaccess - Fatal编程技术网

Php URL中斜杠后的文本作为参数

Php URL中斜杠后的文本作为参数,php,.htaccess,Php,.htaccess,我要创建htaccess规则以打开此url: www.foo.com/?val=hello 致: www.foo.com/hello 我创建了新规则,但它不起作用 RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?s=$1 [QSA] 有什么办法吗?谢谢 我在我的Apache上这样做: Setup index.phtml。它在httpd.conf中定义为DirectoryIndex 安装程序hello.phtml 在我的httpd.conf中,在相应的虚拟主

我要创建htaccess规则以打开此url: www.foo.com/?val=hello 致: www.foo.com/hello

我创建了新规则,但它不起作用

RewriteRule ^([a-zA-Z0-9]+|)/?$ index.php?s=$1 [QSA]

有什么办法吗?谢谢

我在我的Apache上这样做:

  • Setup index.phtml。它在httpd.conf中定义为DirectoryIndex
  • 安装程序hello.phtml
  • 在我的httpd.conf中,在相应的虚拟主机中,我添加了以下内容:

    RewriteEngine on
    RewriteCond %{QUERY_STRING} "val=(.+)"
    RewriteRule "(.*)"  "%1?"    [L,R=302]
    
  • 如果我要求,我会被重定向到

详情:

  • 重写引擎打开:打开重写引擎。记住加载重写模块(
    LoadModule rewrite\u module modules/mod\u rewrite.so
  • RewriteCond:variable%{QUERY\u STRING}包含Apache在
    之后收到的所有内容。我将其与
    val=(.+)
    匹配<代码>匹配任何内容,
    +
    表示“前面的一个或多个”。这里前面的字符是
    ,因此任何字符组合都是有效的。它放在括号中,因为我以后需要匹配的组
  • 重写规则:
    “(.*)”
    匹配
    http://localhost/
    。它被替换为
    %1
    ,这里包含在上面的重写条件中括号中的内容。然后我添加了
    ,以确保没有添加查询字符串
请注意
。默认情况下,如果从
../somepage.html?var1=value1
重写到
../somepage2.html
,重写引擎将自动在其末尾添加
?var1=value1
。要重写而不保留查询字符串,请在末尾添加一个

    L:如果以后有其他规则,这表明它是匹配的最后一条规则。
  • R=302。这里我返回一个302,暂时移动。如果希望重定向是永久性的,请将R=301

使用QSA,它将重定向到
www.foo.com/hello?val=hello
。QSA将查询字符串追加到重写URL的末尾,从而导致重定向循环。