我正在开发一个项目,并且遇到一些.htaccess
无法正常工作的重写规则,我尝试了很多事情,但是没有运气,所以请帮助我。
这是我在做什么:
当我打开时: domain.com/us/search.html?keyword=xyz&location=alabama
它应该必须search.php
从根目录读取文件并按如下方式工作:search.php?directory=us&keyword=xyz&location=alabama
它正确地获得了子目录,但没有获得关键字和位置数据。
这是我的.htaccess
代码:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
RewriteRule ^(.*)/(.*)-ad(.*).html ad.php?countrycode=$1&title=$2&id=$3 [NC]
RewriteRule ^(.*)/$ country.php?countrycode=$1 [NC]
RewriteRule ^(.*)/(.*)-author\.html author.php?countrycode=$1&q=$2 [NC]
RewriteRule ^(.*)/(.*)-author/currentpage=(.*) author.php?countrycode=$1&q=$2¤tpage=$3 [NC]
RewriteRule ^(.*)/search\.html?keyword=(.*)&location=(.*) search.php?countrycode=$1&keyword=$2&location=$3 [NC,L]
RewriteRule ^(.*)/search\.html$ search.php?countrycode=$1 [NC,L]
RewriteRule ^(.*)/latest\.html$ latest.php?countrycode=$1 [NC,L]
RewriteRule ^(.*)/submit\.html$ submit.php [NC,L]
RewriteRule ^error\.html$ error.php [NC,L]
ErrorDocument 400 /error.html
ErrorDocument 401 /error.html
ErrorDocument 403 /error.html
ErrorDocument 404 /error.html
ErrorDocument 500 /error.html
相关规则是
RewriteRule ^(.*)/search\.html$ search.php?countrycode=$1 [NC,L]
通常RewriteRule
保留一个现有的查询字符串,除非您自己添加一个
修改查询字符串
默认情况下,查询字符串不更改地传递。但是,您可以在包含查询字符串部分的替换字符串中创建URL。只需在替换字符串内使用问号来表示应将以下文本重新插入到查询字符串中。当您要删除现有的查询字符串时,仅用问号结束替换字符串。要组合新旧查询字符串,请使用[QSA]标志。
要保留先前的查询字符串,必须添加QSA|qsappend
标志
RewriteRule ^(.*)/search\.html$ search.php?countrycode=$1 [NC,L,QSA]
这是search.html
无条件重写的。
如果你想,只有当请求中包含的查询字符串重写它keyword=xyz&location=alabama
,你必须前缀规则用RewriteCond
具有%{QUERY_STRING}
RewriteCond %{QUERY_STRING} keyword=.+?&location=.
RewriteRule ^(.*)/search\.html$ search.php?countrycode=$1 [NC,L,QSA]
附言:一开始,您要写作search.php?directory=us&...
,但要有规则search.php?countrycode=...
。相应地调整规则。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句