我有一个非常特殊的要求,希望我能解释它而不会太混乱。我创建了一个页面模板,列出了一些州的城市,让我们说URL是这样的:http://www.example.com/states/?q=ohio
我想像http://www.example.com/states/ohio/
我还使用了 add_rewrite_rule
,但它没有给我我想要的输出。
所以我该如何解决?
答案 0 :(得分:0)
它实际上不是PHP,它是使用mod_rewrite的apache。发生的事情是该人请求链接http://www.example.com/states/ohio/,然后apache使用重写规则将其剪切,使其看起来像这样http://www.example.com/states/?q=ohio到服务器。您可以在此处找到更多信息:Rewrite Guide
答案 1 :(得分:0)
由于您正在运行Apache,因此您可以创建一个RewriteRule
来将URI重写为应用程序理解的内容,但为最终用户提供虚荣/漂亮的URI。
例如;
RewriteEngine On
#Rewrites a request like http://www.example.com/states/ohio/ to http://www.example.com/states/?q=ohio at application level
#Having the /? at the end makes the ending slash optional
RewriteRule ^states/([^\/]+)/?$ /states/?q=$1 [L]
进行测试
您可以根据需要使用add_rewrite_rule
重写网址
add_rewrite_rule('^states/([^\/]+)/?$', 'states/?q=ohio$matches[1]', 'top');
否则,您必须手动修改锚标记(href
)上的每个<a />
元素,使其指向/states/ohio/
而不是/states/?q=ohio
。