加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – mod_rewrite可以在URL中查找变量,替换它之前的部分,删除

发布时间:2020-12-13 22:43:54 所属栏目:PHP教程 来源:网络整理
导读:我环顾四周,但坦率地说,我不确定我需要搜索的术语以获得更严格的结果.哎呀,我正在努力与url vs. uri vs. page vs. link以及每个是什么,不是什么. MOD_REWRITE指南似乎是为那些精通Apache或Unix或其他任何东西的人编写的,特别是当他们似乎都没有解释或解析每
我环顾四周,但坦率地说,我不确定我需要搜索的术语以获得更严格的结果.哎呀,我正在努力与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
> http://mydomain.com/WORDS-AND-DASHES-m-NUMBERS_WITH_UNDERSCORES
> http://mydomain.com/WORDS-AND-DASHES-p-NUMBERS_WITH_UNDERSCORES

重写的URL分别应该是:

> http://mydomain.com/index.php?indexu0026amp;categories_id=NUMBERS_WITH_UNDERSCORES
> http://mydomain.com/index.php?main_page=indexu0026amp;mfrs_id=NUMBERS_WITH_UNDERSCORES
> http://mydomain.com/index.php?main_page=indexu0026amp;products_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和 – 之外的其他内容,则相应地修改规则.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读