English 中文(简体)
mod_ rewrite 能否在 URL 中找到变量, 替换之前的部分, 删除变量并保存剩余内容?
原标题:Can mod_rewrite find a variable within an URL, replace a portion before it, delete the variable and preserve what remains?

我四处看了一眼,但坦率地说,我不确定我需要用什么语言来寻找更精确的结果。 Heck,我正在与url vs. uris vs. uris vs. page vs. page vs. conness and what every is and what eas and is et. 而且,MOD_REWITE指南似乎是为通晓阿帕奇或Unix或其它东西的人而编写的, 特别是当他们似乎没有解释或分析每个“程序”字符的作用或含义的示例时。在这里和整个谷歌,我似乎没有得到我所试图覆盖的搜索的最大25个结果。

我想做的是替换一个 URL 的通配符字符串, 取决于三个变量, 同时保存其它位数 。 这有可能使用 mod_ rewrite 吗?

例如,例如

三个请求的URL是:

  1. http://mydomain.com/WORDS-AND-DASHES-c-NUMBERS_WITH_UNDERSCORES
  2. http://mydomain.com/WORDS-AND-DASHES-m-NUMBERS_WITH_UNDERSCORES
  3. http://mydomain.com/WORDS-AND-DASHES-p-NUMBERS_WITH_UNDERSCORES

改写后的URL应分别是:

  1. http://mydomain.com/index.php?index&categories_id=NUMBERS_WITH_UNDERSCORES
  2. http://mydomain.com/index.php?main_page=index&mfrs_id=NUMBERS_WITH_UNDERSCORES
  3. http://mydomain.com/index.php?main_page=index&products_id=NUMBERS_WITH_UNDERSCORES

WORDS-AND-DASHES和NUMBERS_WITH_UNDERSCORES在内容和长度上各有不同。唯一的常数是域和三个链接类型识别符, -c-,n-和p-。WORDS-AND-DASHES将被替换为根据链接类型的不同变量,该变量已被删除,而NUMBERS_WITH_UNDERSCORES则保留在新的 URL 中。

IOW 如果一个 URL 包含“ - c - ”, 那么我想用“ index.php? index& categories_ id=” 替换域和“ - c - ” 之间的一切, 删除“ - c - ” 部分, 并保存 NUMBERS_ WITH_ UNDERSCORES 。 它可能只有一个数字跟随 - c, m - 或 - p - 。

如果我知道PHP可能是可能的,但我不知道,我希望Mont_write的威力和我想的一样强大。如果它需要每个变量的多重规则,我也可以接受。做三倍的工作仍然比10000+倍要好。

FWIW在升级时发现,旧的URL重写模块停止运行,所以我正努力迅速重建.htaccess和站点map.xml, 用于搜索引擎和搜索结果中的所有断层链接。

...然后,我可能又在叫 曼格勒的代谢河口。

感谢你们分享知识、领导方向和(或)建议。

-BC -BC

问题回答

下列规则应该有效。 它们必须放置在网站根目录中的.httaccess 文件内 。

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]

Apache 在请求您在问题中提及的 URL 时会点火 < code> index.php 。 Apache 会相应填充查询字符串。 如果 WORDS-AND- DASHES 包含除 a-z - 之外的其他内容, 则相应修改规则 。

这可能过于简化,但尝试:

RewriteEngine On
RewriteRule ^(.*?)-c-([d_]+)$ index.php?index&categories_id=$2         [L]
RewriteRule ^(.*?)-m-([d_]+)$ index.php?main_page=index&mfrs_id=$2     [L]
RewriteRule ^(.*?)-p-([d_]+)$ index.php?main_page=index&products_id=$2 [L]




相关问题
Using SimplePie with CodeIgniter and XAMPP

I am using CodeIgniter 1.7.2 with XAMPP 1.7.2 on a Windows computer. I am trying to make use of SimplePie. I followed all the instructions I could find: a copy of simplepie.inc is in my applications/...

Multiple Sites with common files

I have developed over 50 sites that all use the exact same files other than CSS and IMAGES, I currently duplicate the files each time I create a new site and upload different css and images. What ...

http server validation

I finish a litle http server, writing from scratch. I would like to be sure that my imlementation is conforme to the HTTP specifications. W3C give us tools for HTML/XML conformance, but i see nothing ...

热门标签