Php my.htaccess重定向失败
htaccess已启用,我已运行规范化(无www到www。) 我正在尝试使用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在浏览器
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]