我知道这可能是一个常见的问题而且之前已经被问过但是.htacess看起来很陌生,我似乎无法通过查看以前的问题来解决这个问题。
我有一个搜索的索引脚本,语法为:
.../listing/?field=property_type&query=retail
我只想将其重写为:
.../listing/{field}/{query}
另外一个问题,我有一些布尔值的字段..例如:
.../listings/?forlease=1
所以在这种情况下我只使用isset()
但是想将其重写为:
.../listings/forlease/
一如既往地感谢您的帮助! Stack Overflow rock!
我看到了一些很好的答案,但完全是我正在寻找的东西:
用户请求: .../listing/property_type/retail/
Apache重写为: ../listing/?field=property_type&query=retail
脚本看到: $_GET['field']='property_type'
& $GET['query']='retail'
在布尔值的情况下(所有布尔值只有一个Dir):
用户请求: .../listing/forlease/
Apache重写为: ../listing/?forlease=1
脚本看到: $_GET['forlease'] = 1
答案 0 :(得分:2)
如果您的网络服务器是Apache,那么您可以使用mod_rewrite。
退房:http://www.yourhtmlsource.com/sitemanagement/urlrewriting.html =)
答案 1 :(得分:1)
RewriteRule ^.*/listing/([^/]*)/?$ listing/?$1=1 [NC,L]
RewriteRule ^.*/listing/([^/]*)/?(.*)$ listing/?property_type=$1&query=$2 [NC,L]
试试这个,首先检查一个条件(http://...listing/forlease),否则重写为(http://...listing/field/query)
你可能想要:
RewriteRule ^.*/listing/([^/]*)/?$ listing/?$1=1&%{QUERY_STRING} [NC,L]
RewriteRule ^.*/listing/([^/]*)/?(.*)$ listing/?property_type=$1&query=$2&%{QUERY_STRING} [NC,L]
在查询字符串中保留任何其他参数。
答案 2 :(得分:1)
在你的.htaccess中你可以有一些简单的规则:
RewriteRule ^.*/listings/([a-zA-Z0-9_]+)/([a-zA-z0-9_]+)$ /listing/?property_type=$1&query=$2 [QSA,L]
RewriteRule ^.*/listings/forlease/$ /listing/?forlease=1 [QSA,L]