Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建用户友好的自定义URL?_Php_Wordpress - Fatal编程技术网

Php 如何创建用户友好的自定义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使用重写规则将其切碎,使其

我有一个非常特殊的要求,希望我能解释它而不会太混乱。我创建了一个页面模板,其中列出了一些州的城市,比如URL如下:
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端添加重写规则的原因。