Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Wordpress 如何在url重写中使用外部信息?_Wordpress_.htaccess_Url_Mod Rewrite_Rewrite - Fatal编程技术网

Wordpress 如何在url重写中使用外部信息?

Wordpress 如何在url重写中使用外部信息?,wordpress,.htaccess,url,mod-rewrite,rewrite,Wordpress,.htaccess,Url,Mod Rewrite,Rewrite,希望你们中的一些人能帮我解决这个问题。我以前从未花时间在.htaccess上,所以我有点迷路了 基本上我想采取一个链接,如 example.com/index.php?id=3并将其转换为 我可以很容易地更改它,使链接转换为或类似于这些内容,但我真的不明白人们是如何完成我正在寻找的更改的。我知道Wordpress与他们的URL做了类似的事情,但是他们如何访问帖子名称信息呢?Wordpress通过将所有不能解析为文件或目录的内容重写到index.php,看起来是这样的: RewriteEngine

希望你们中的一些人能帮我解决这个问题。我以前从未花时间在.htaccess上,所以我有点迷路了

基本上我想采取一个链接,如 example.com/index.php?id=3并将其转换为


我可以很容易地更改它,使链接转换为或类似于这些内容,但我真的不明白人们是如何完成我正在寻找的更改的。我知道Wordpress与他们的URL做了类似的事情,但是他们如何访问帖子名称信息呢?

Wordpress通过将所有不能解析为文件或目录的内容重写到
index.php
,看起来是这样的:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?page=$1 [L]
php读取请求的URI并找出如何处理它。同时,wordpress知道这些URL正在被重写,因此它会使用干净的SEO友好URL呈现页面,如
http://example.com/pagename/

例如,mod_rewrite本身无法知道id=3等同于pagename,除非您硬编码一组单独的重写规则。您所能做的是使index.php接受pagename,这样您的规则将如下所示:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?page=$1 [L]
现在就要在内容中生成干净的SEO友好URL了。在内容管理系统中,页面本身通常以某种ID存储在数据库中。假设一个页面“测试页面”,数据库中的ID为“5”,创建于2011年10月10日。当CMS需要生成链接时,它会在数据库中查找并将链接构造为
/2011/10/Test\u Page


因此,当你进入首页时,index.php会生成指向其所有页面的链接,对于“测试页面”,该链接会显示
/2011/10/Test_page
,当有人点击该链接时,apache会使用类似
RewriteRule^([0-9]+)/([0-9]+)/(.+)$/index.php?年=$1月=$2,标题=$3[L]
将URL重写为
/index.php?年份=2011,月份=10,标题=Test\u页面
。php脚本在数据库中查找正确的页面,并将其返回到浏览器。这将是不同的每一个CMS。本质上,.htaccess不知道数据库中存储的任何内容,但它可以重写链接,以便将所需信息(如“id”或“页面”)传递给脚本。这取决于脚本决定返回哪个页面和在该页面上生成干净的SEO友好链接。

好的,假设我选择了WP路线,并将所有内容重写为
index.php
。我仍然不太明白如何将URL重写为更干净的内容。我查看了Wordpress中的
rewrite.php
文件,以了解它们是如何做到的,但当它隐藏在复杂CMS中的2000行文件中时,要理解一个困难的概念并不容易。请参阅我的编辑。这完全取决于你如何生成干净的SEO友好链接。这根本不是.htaccess或apache的一部分。