如何将平面链接重写为动态链接并保留查询字符串?

发布于 2024-08-30 04:23:56 字数 1136 浏览 3 评论 0原文

我想重写一个网址,例如:
http://my.project/mydomain.com/ ANY_NUMBER_OF_CATEGORIES/designer/4/designer-name/page.html
对此:
http://my.projects/mydomain.com/ANY_NUMBER_OF_CATEGORIES/page。 html?designer=4

我想使用 mod-rewrite 来完成此任务。

需要注意的是:

  1. “mydomain.com/”和“/designer”之间可以有任意数量的类别。
    1. 例如,URL 可以是 http://my.project/mydomain.com/designer/4/designer-name/page.html 也可以是 http://my.project/mydomain.com /tops/shirts/small/designer/4/designer-name/page.html
  2. 可以在需要的原始网址中提供查询字符串保存在重写的 url 中。
    1. 例如,提供的网址可以是:http://my.project/mydomain.com/designer/4/designer-name/page.html?color=red&type=shirt
    2. 鉴于上面的网址,结果网址需要为:http://my.projects/mydomain.com/page.html?designer=4&color=red&type=shirt
    3. 查询字符串的顺序并不重要。 “designer=4”部分可以位于查询字符串其余部分之前或之后。

我是 .htaccess 的新手并重新编写,因此任何示例和/或解释将不胜感激。非常感谢。

I am wanting to rewrite a url like:
http://my.project/mydomain.com/ANY_NUMBER_OF_CATEGORIES/designer/4/designer-name/page.html

to this:
http://my.projects/mydomain.com/ANY_NUMBER_OF_CATEGORIES/page.html?designer=4

I would like to use mod-rewrite to accomplish this.

Things to note:

  1. Any number of categories can be between 'mydomain.com/' and '/designer'.
    1. For instance the url could be http://my.project/mydomain.com/designer/4/designer-name/page.html or it could be http://my.project/mydomain.com/tops/shirts/small/designer/4/designer-name/page.html
  2. A query string may be provided in the original url that needs to be preserved in the rewritten url.
    1. For example url provided could be: http://my.project/mydomain.com/designer/4/designer-name/page.html?color=red&type=shirt
    2. Given the url above the resulting url would need to be: http://my.projects/mydomain.com/page.html?designer=4&color=red&type=shirt
    3. The order of the query string does not matter. The 'designer=4' part could come before or after the rest of the query string.

I'm new to .htaccess and re-writes so any examples and or explanations would be greatly appreciated. Thank you very much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空名 2024-09-06 04:23:56

在您的 .htaccess 文件中尝试以下操作:

RewriteEngine on
RewriteRule ^(.+/)?(\d+)/[^/]+/([^/]+\.html)$ $1$3?designer=$2 [L,QSA]

Try this in your .htaccess file:

RewriteEngine on
RewriteRule ^(.+/)?(\d+)/[^/]+/([^/]+\.html)$ $1$3?designer=$2 [L,QSA]
最舍不得你 2024-09-06 04:23:56

我最终不得不创建两个单独的重写规则:

RewriteRule ^designer/([^/]+)/.*/([^/]+)\.html $2.html?designer=$1 [NC,L,QSA]
RewriteRule (.*)/designer/([^/]+)/.*/([^/]+)\.html $1/$3.html?designer=$2 [NC,L,QSA]

感谢 Gumbo 指出重写的 [QSA] 部分。

I ended up having to create two separate RewriteRules:

RewriteRule ^designer/([^/]+)/.*/([^/]+)\.html $2.html?designer=$1 [NC,L,QSA]
RewriteRule (.*)/designer/([^/]+)/.*/([^/]+)\.html $1/$3.html?designer=$2 [NC,L,QSA]

Thanks to Gumbo for pointing out the [QSA] portion of the rewrite.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文