Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Mod rewrite 修改澄清问题。仅适用于动态URL?_Mod Rewrite - Fatal编程技术网

Mod rewrite 修改澄清问题。仅适用于动态URL?

Mod rewrite 修改澄清问题。仅适用于动态URL?,mod-rewrite,Mod Rewrite,我被要求开发一个修改来改变 http://www.example.com/health-and-fitness-tips/999/ 进入 http://www.example.com/health-and-fitness-tips/how-do-I-lose-10kg-in-12-weeks/ 其中999是id和我如何在12周内减掉10kg是标题 这是可能的吗?或者mod_rewrite只是为了更改以下内容 http://localhost/siteengine/products.php?id=

我被要求开发一个修改来改变

http://www.example.com/health-and-fitness-tips/999/

进入

http://www.example.com/health-and-fitness-tips/how-do-I-lose-10kg-in-12-weeks/

其中
999
id
我如何在12周内减掉10kg
标题

这是可能的吗?或者mod_rewrite只是为了更改以下内容

http://localhost/siteengine/products.php?id=123

进入

http://localhost/products/123


??

这实际上不是AFAIK所能做到的(动态方面,没有额外的模块)。您需要做的第一步是将所有链接转换为SEO链接,然后您需要将标题作为参数提供给页面

例如:

<a href=/health-and-fitness-tips/how-do-I-lose/>

Condition: ^/health-and-fitness-tips/(.*)$/
Rewrite to: ^/page.php?title=$1

条件:^/健康和健身提示/(*)$/
重写为:^/page.php?标题=$1
其中一些是伪代码,但是在page.php中解析$_GET['title'],并基于permalink查询数据库


您还需要为每个永久对齐的URI设置301s,以便在完成此操作后搜索引擎不会丢失。

这实际上是不可能做到的(动态方面,没有额外的模块)。您需要做的第一步是将所有链接转换为SEO链接,然后您需要将标题作为参数提供给页面

例如:

<a href=/health-and-fitness-tips/how-do-I-lose/>

Condition: ^/health-and-fitness-tips/(.*)$/
Rewrite to: ^/page.php?title=$1

条件:^/健康和健身提示/(*)$/
重写为:^/page.php?标题=$1
其中一些是伪代码,但是在page.php中解析$_GET['title'],并基于permalink查询数据库


您还需要为每个永久对齐的URI设置301s,以便在完成此操作后搜索引擎不会丢失。

Mod\u rewrite仅将正则表达式应用于URL,因此无法从Title或vai-vs获取ID(据我所知).

Mod_rewrite只是将正则表达式应用于URL,因此从Title或vai-vs获取ID是不可能的(据我所知)。

您可以这样做,但这将是混乱和滞后的。您仍然需要一个脚本来执行重写

查看该指令的文档,特别是prg映射类型上的位——使用外部程序提供URL映射服务

现在,请注意,我认为这是一个糟糕的主意,但它会让你完成这件事。

你可以这样做,但它会变得凌乱和滞后。您仍然需要一个脚本来执行重写

查看该指令的文档,特别是prg映射类型上的位——使用外部程序提供URL映射服务


现在,请注意,我认为这是一个糟糕的主意,但它可以让您完成这项工作。

我猜meder给出的答案就是您正在寻找的答案,但从技术上讲,您可以创建一个静态映射文件,将一组标题字符串重定向到ID,并且它不必执行外部
prg
可执行文件:

RewriteMap static-title-to-id txt:/tmp/title_to_id.txt
RewriteRule ^/health-and-fitness-tips/(.*)/ /health-and-fitness-tips/${static-title-to-id:$1}/ [L]
使用
/tmp/title\u to_id.txt
文件的内容如下:

how-do-I-lose-10kg-in-12-weeks  999
some-other-title                988
and-another                     983

我猜meder给出的答案就是您正在寻找的答案,但从技术上讲,您可以创建一个静态映射文件,将一组标题字符串重定向到ids,而不必执行外部
prg
可执行文件:

RewriteMap static-title-to-id txt:/tmp/title_to_id.txt
RewriteRule ^/health-and-fitness-tips/(.*)/ /health-and-fitness-tips/${static-title-to-id:$1}/ [L]
使用
/tmp/title\u to_id.txt
文件的内容如下:

how-do-I-lose-10kg-in-12-weeks  999
some-other-title                988
and-another                     983

方便的解决方案。如果您无法编辑导致页面名称不正确的代码,这可能非常有用。Meder的回答从技术上回答了我的问题,但没有提供可行的结果。当我输入这个时,我实际上已经完成了80%的实现你的答案。非常感谢。方便的解决方案。如果您无法编辑导致页面名称不正确的代码,这可能非常有用。Meder的回答从技术上回答了我的问题,但没有提供可行的结果。当我输入这个时,我实际上已经完成了80%的实现你的答案。非常感谢。