.htaccess在带有问号的HTTP GET上失败

时间:2014-02-16 00:46:35

标签: regex apache .htaccess mod-rewrite

我已经尝试了几乎所有我可以在网上找到的“解决方案”,包括Stackoverflow。

我正在尝试重写

  

http://example.com/index.php?view=search&q=something

  

http://example.com/search/?q=something

在搜索某些内容时,搜索表单指示您

  

搜索/ Q =此

但是“ / search / ”已全部通过,因此它已经使用了问号 现在我坚持用脚本重定向每个带有问号的搜索,而它应该是一个“&”登录。

如果我手动改变它的话会有效吗?到&。

有人请求帮助我使用Questionmark吗?

这是我的.htaccess

的副本
RewriteEngine on


RewriteCond %{REQUEST_FILENAME} !-f

ErrorDocument 404 /test.php


RewriteRule ^nothingfound/ test.php [L]

RewriteCond %{QUERY_STRING} q=([^&]+)
RewriteCond %{QUERY_STRING} v=([^&]+)
RewriteRule ^search/([^/]+) /index.php?view=search&q=%1


RewriteRule ^([^/.]+)/?$ index.php?view=$1 [L]
RewriteRule ^([^/.]+)/([^/.]+)/?$ index.php?view=$1&task=$2 [L]
RewriteRule ^([^/.]+)/([0-9]+)/([^/.]+)*/$ index.php?view=$1&id=$2&title=$3 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([0-9]+)*/$ index.php?view=$1&task=$2&page=$3 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/*/$ index.php?view=$1&task=$2&letter=$3 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([0-9]+)*/$ index.php?view=$1&task=$2&letter=$3&page=$4 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([0-9]+)/*/$  index.php?view=$1&id=$2&title=$3&page=$4 [L]
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/*/$  index.php?view=$1&id=$2&title=$3&list=$4 [L]

提前致谢。

2 个答案:

答案 0 :(得分:0)

这是你要找的吗?

替换此

RewriteCond %{QUERY_STRING} q=([^&]+)
RewriteCond %{QUERY_STRING} v=([^&]+)
RewriteRule ^search/([^/]+) /index.php?view=search&q=%1

用这个

RewriteCond %{QUERY_STRING} \bq=
RewriteRule ^search/$ index.php?view=search [QSA,L]

答案 1 :(得分:0)

此规则适用于您:

RewriteCond %{QUERY_STRING} (^|&)[qv]=.+ [NC]
RewriteRule ^(search)/?$ index.php?view=$1 [QSA,L,NC]