Php URL中斜杠后的文本作为参数
我要创建htaccess规则以打开此url: www.foo.com/?val=hello 致: www.foo.com/hello 我创建了新规则,但它不起作用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中,在相应的虚拟主
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
。要重写而不保留查询字符串,请在末尾添加一个?
- R=302。这里我返回一个302,暂时移动。如果希望重定向是永久性的,请将R=301
www.foo.com/hello?val=hello
。QSA将查询字符串追加到重写URL的末尾,从而导致重定向循环。