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 my.htaccess重定向失败_Php_.htaccess - Fatal编程技术网

Php my.htaccess重定向失败

Php my.htaccess重定向失败,php,.htaccess,Php,.htaccess,htaccess已启用,我已运行规范化(无www到www。) 我正在尝试使用htaccess执行以下操作 www.domain.com/page.php?i=Page1 www.domain.com/page.php?i=Page2 到 我尝试使用此代码段,但迄今为止运气不佳: rewriterule ^([a-zA-Z0-9_-]+)/$ page.php?i=$1 但是我想我会走相反的路。我找不到这样的例子。 我有,但我不能让它工作 您希望www.domain.com/Page1在浏览器

htaccess已启用,我已运行规范化(无www到www。)

我正在尝试使用htaccess执行以下操作

www.domain.com/page.php?i=Page1
www.domain.com/page.php?i=Page2

我尝试使用此代码段,但迄今为止运气不佳:

rewriterule ^([a-zA-Z0-9_-]+)/$ page.php?i=$1
但是我想我会走相反的路。我找不到这样的例子。
我有,但我不能让它工作

您希望
www.domain.com/Page1
在浏览器的地址栏中可见,但在内部,该url实际上应该
/page.php?i=Page1
。在这种情况下,问题在于正则表达式中的尾部
/

Rewriterule ^([a-zA-Z0-9_-]+)/$ page.php?i=$1
                             ^---here
所需的
/Page1
url没有尾随斜杠,但重写正则表达式需要尾随斜杠,因此模式不匹配,不会发生重写。尝试删除
/
,看看这是否有帮助:

Rewriterule ^([a-zA-Z0-9_-]+)$ page.php?i=$1
                             ^---no /
试试这个:

RewriteEngine On
RewriteCond %{REQUEST_URI}  ^/page\.php$
RewriteCond %{QUERY_STRING} ^i=([a-zA-Z0-9_-]+)$
RewriteRule ^(.*)$ http://www.domain.com/%1? [R=302,L]

摘自:

为了解析查询字符串,您需要在重写后访问它

# We need this line because /page.php?i=page.php will cause an infinite loop
RewriteCond %{QUERY_STRING} !i=page.php
# Now we parse out the value of i from the query string
RewriteCond %{QUERY_STRING} i=([^&]+)
RewriteRule ^page.php /%1  [L]

只是一个简短的提示;在编写正则表达式时,使用正则表达式测试工具(如regex buddy或regex coatch)通常可以节省时间,因此您可以快速找到匹配项,如果不匹配,原因是什么。抱歉,粘贴了错误的部分-如果您阅读了该链接上的内容,您应该会得到它。更新了我的答案。此网页有一个重定向循环抱歉,输入错误->将重写规则中的美元符号更改为百分号-更新了我的答案我得到:www.domain.com/Page1?i=Page1I重定向后我需要删除查询字符串
# We need this line because /page.php?i=page.php will cause an infinite loop
RewriteCond %{QUERY_STRING} !i=page.php
# Now we parse out the value of i from the query string
RewriteCond %{QUERY_STRING} i=([^&]+)
RewriteRule ^page.php /%1  [L]