php – mod_rewrite可以在URL中查找变量,替换它之前的部分,删除
我环顾四周,但坦率地说,我不确定我需要搜索的术语以获得更严格的结果.哎呀,我正在努力与url vs. uri vs. page vs. link以及每个是什么,不是什么. MOD_REWRITE指南似乎是为那些精通Apache或Unix或其他任何东西的人编写的,特别是当他们似乎都没有解释或解析每个“编程”字符的作用或意义时.在这里和整个谷歌我似乎没有得到任何我想要的搜索结果的前25个我试图涵盖的概念…
好吧,我想要做的是替换依赖于三个变量的URL的通配符字符串,同时保留其他位.这可能使用mod_rewrite吗? 例如 三个请求的URL是: > http://mydomain.com/WORDS-AND-DASHES-c-NUMBERS_WITH_UNDERSCORES 重写的URL分别应该是: > http://mydomain.com/index.php?indexu0026amp;categories_id=NUMBERS_WITH_UNDERSCORES NUM AND-DASHES的内容和长度因页面而异,NUMBERS_WITH_UNDERSCORES也是如此.唯一的常量是域和三个链接类型标识符,-c –,– n-和-p-. WORDS-AND-DASHES将根据链接类型替换为变量,该链接类型将被删除,并且NUMBERS_WITH_UNDERSCORES将保留在新URL中. 如果url包含“-c-”,那么我想用“index.php?index& categories_id =”替换域和“-c-”之间的所有内容,删除“-c-”部分并保留NUMBERS_WITH_UNDERSCORES.有可能只有一个数字跟在-c –,– m-或-p-之后. 如果我知道PHP这可能是可能的,但我没有,我希望mod_write像我认为的那样强大.如果每个变量需要多个规则,那我也很好.做三次工作仍然比10000次好. FWIW,在升级过程中发现旧的URL重写模块已停止运行,因此我尝试为搜索引擎和各自结果中的所有死链接快速重建.htaccess和sitemap.xml. ……然后我可能会咆哮着Mangled Metaphorbial Creek. 感谢您分享的任何知识,指导和/或建议. -公元前 解决方法
以下规则应该有效.它们必须放在网站根目录中的.htaccess文件中.
RewriteEngine On RewriteRule ^([a-z-]+)-c-([0-9_]+) index.php?index&categories_id=$2 [NC] RewriteRule ^([a-z-]+)-m-([0-9_]+) index.php?main_page=index&mfrs_id=$2 [NC] RewriteRule ^([a-z-]+)-p-([0-9_]+) index.php?main_page=index&products_id=$2 [NC] 当您在问题中提到的URL被请求时,Apache将触发index.php. Apache将相应地填充查询字符串.如果WORDS-AND-DASHES包含除a-z和 – 之外的其他内容,则相应地修改规则. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |