Php 如何创建用户友好的自定义URL?
我有一个非常特殊的要求,希望我能解释它而不会太混乱。我创建了一个页面模板,其中列出了一些州的城市,比如URL如下:Php 如何创建用户友好的自定义URL?,php,wordpress,Php,Wordpress,我有一个非常特殊的要求,希望我能解释它而不会太混乱。我创建了一个页面模板,其中列出了一些州的城市,比如URL如下:http://www.example.com/states/?q=ohio 我想像http://www.example.com/states/ohio/ 我还使用了add\u rewrite\u rule,但它没有给我想要的输出 那么我该如何修复呢?它实际上不是PHP,而是使用mod_rewrite的apache。发生的情况是,此人请求链接,然后apache使用重写规则将其切碎,使其
http://www.example.com/states/?q=ohio
我想像http://www.example.com/states/ohio/
我还使用了add\u rewrite\u rule
,但它没有给我想要的输出
那么我该如何修复呢?它实际上不是PHP,而是使用mod_rewrite的apache。发生的情况是,此人请求链接,然后apache使用重写规则将其切碎,使其看起来像这样,并发送到服务器。您可以在此处找到更多信息:Web服务器端 因为您运行的是Apache,所以可以创建一个脚本,将URI重写为应用程序可以理解的内容,但最终用户可以使用vanity/pretty 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]
测试
Wordpress端
您可以根据需要使用重写URL
add_rewrite_rule('^states/([^\/]+)/?$', 'states/?q=ohio$matches[1]', 'top');
否则,您必须手动修改锚定标记(
)上的每个href
元素,以指向/states/ohoi/
,而不是/states/?q=ohoi
您在wordpress中运行的是Nginx还是Apache?Apache和我的站点。这取决于他们使用的是Apache还是Nginx。虽然这是一个很好的答案,但为了改进它,您应该根据OPs要求给出一个示例重写规则,并对发生的情况进行注释/解释。我在.htaccess文件中使用了上述代码,但URL中出现了stile?q。重写规则会在应用程序级别重写它,它不会从应用程序重写URL,这就是为什么您需要使用add\u rewrite\u rule()
在wordpress端添加重写规则的原因。