【问题标题】:mod_rewrite to change words with a dynamic numeric identifiermod_rewrite 使用动态数字标识符更改单词
【发布时间】:2012-08-21 05:52:26
【问题描述】:

我要做的是从旧项目模块中重写我的 URL 中的一些单词,以便它们看起来适用于当前项目。

我开始的网址是:

http://WEBSITE.com/stories/topic/view/pet_id/6/topic_id/41

我在 .htaccess 中拥有的是:

# Change Pet and Topic to Story and Chapter
  RewriteCond stories/topic/view/pet_id/([A-Za-z0-9-]+)/topic_id/    
  RewriteRule stories/topic/view/pet_id/6/topic_id/.*$  stories/chapter/view/story_id/6/chapter_id/$1

没有为条件末尾的数字添加部分,因为我真的只需要改变到那个点的单词。也不确定这是否可以。

不确定我没有错,希望那里的 mod_rewrite 大师之一可以帮助我。谢谢!

【问题讨论】:

    标签: apache mod-rewrite friendly-url seo


    【解决方案1】:

    试试:

    RewriteRule ^(.*)/pet_id/(.*) /$1/story_id/$2 [L]  
    RewriteRule ^(.*)/topic_id/(.*) /$1/chapter_id/$2 [L]  
    

    删除你以前的规则,不确定他们试图做什么,但他们不会工作。 RewriteCond 除了破坏 apache 什么都不做。

    【讨论】:

    • 嗯,试一试,当我这样做时,我的整个网站上都会出现内部错误 500 页面。 # Rewrite pet to story etc RewriteCond stories/topic/view/pet_id/([A-Za-z0-9-]+)/topic_id/ RewriteRule ^(.*)pet_id/(.*) /$1/story_id/$2 [L] RewriteRule ^(.*)topic_id/(.*) /$1/chapter_id/$2 [L] 我需要更改我的重写条件吗?
    • @Kotoku 在您的所有规则被破坏之前摆脱它们。见编辑
    • 感谢乔恩的建议!运行它,检查输出,一切看起来都很好。 (调试器告诉我在第一行之后删除 L ,否则它将停止并且不应用第二个条件)。说我的输出 URL 应该是:website.com/stories/topic/view/story_id/4/chapter_id/8 目前还不起作用,我想如果我想解决这个问题,我可能必须接下来编辑代码,因为这些是变量的名称?感谢您至少帮助我解决 .htaccess 错误,只是好奇这是否是我的下一站。
    • @Kotoku “因为那些是变量的名称?” 不知道你的意思。我没有你在做什么的上下文,只是你有一个 URI 需要从一件事更改为另一件事。如果这不起作用,那么您最终得到的 URI 不是您所期望的?
    • @Kotoku 另外,不知道您使用的是什么调试器,但L 标志只停止重写在当前循环中。重写引擎将继续循环遍历所有规则,直到 URI 没有变化。所以留下L只会影响更改的顺序,不会改变结果。
    猜你喜欢
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多