gpt4 book ai didi

apache - 搞砸了 url 重写

转载 作者:行者123 更新时间:2023-12-03 19:12:04 24 4
gpt4 key购买 nike

所以,思考和创建一个新的网站,视频库风格,带有类别、模型、视频等。

我创建了脚本、页面、url 等,现在创建一个 url_rewriter 会很好,以简化和使 url 更加 SEO。

但我搞砸了,我越来越困惑。

这些是我网站的网址,以及我想转换它们的网址。

index.php
my-url.com

categories.php
my-url.com/categories/

category.php?category=category
my-url.com/category/

category.php?category=category&page=1
my-url.com/category/page-1/

category.php?category=category&sort=sort
my-url.com/category/sort/

category.php?category=category&page=1&sort=sort
my-url.com/category/page-1/sort/

my-url.com/models.php
my-url.com/models/

my-url.com/model.php?model=Model-Name
my-url.com/model/Model-Name

my-url.com/model.php?model=Model-Name&page=1
my-url.com/model/Model-Name/page-1/

my-url.com/model.php?model=Model-Name&sort=sort
my-url.com/model/Model-Name/sort/

my-url.com/model.php?model=Model-Name&page=1&sort=sort
my-url.com/model/Model-Name/page-1/sort/

my-url.com/videos.php
my-url.com/videos/

my-url.com/videos.php?page=1
my-url.com/videos/page-1/

my-url.com/videos.php?sort=sort
my-url.com/videos/sort/

my-url.com/videos.php?page=1&sort=sort
my-url.com/videos/page-1/sort/

my-url.com/video.php?title=video-title
my-url.com/video/video-title.html

这是我到目前为止所写的 url 重写,现在可以做它想做的事情,而不是它应该做的或我希望它做的。
RewriteRule ^([^/]+)\/$ category.php?category=$1 [NC,L]
RewriteRule ^([^/]+)/page-([^/]+)/$ category.php?category=$1&page=$2 [NC,L]

RewriteRule ^([^/]+)\/([^/]+)\/$ category.php?category=$1&sort=$2 [NC,L]
RewriteRule ^([^/]+)/page-([^/]+)/([^/]+)/$ category.php?category=$1&page=$2&sort=$3 [NC,L]


RewriteRule ^models/$ models.php

RewriteRule ^model/([[A-Za-z0-9_]]+)\/$ model.php?model=$1 [NC,L]
RewriteRule ^model/([^/]+)/page-([^/]+)\/$ model.php?model=$1&page=$2 [NC,L]

RewriteRule ^model/([^/]+)\/([^/]+)\/$ model.php?model=$1&sort=$2 [NC,L]
RewriteRule ^model/([^/]+)/page-([^/]+)/([^/]+)\/$ model.php?model=$1&page=$2&sort=$3 [NC,L]


RewriteRule ^videos/$ page.php
RewriteRule ^videos/page-([^/]+)\.html$ page.php?page=$1 [NC,L]


RewriteRule ^video/([^/]+)\.html$ out.php?id_photo=$1 [NC,L]

现在我觉得我真的搞砸了,我越摸它似乎越糟......
即使我转到 url my-site.com/model/Model-Name,他也明白他必须使用 model.php 文件,但没有看到 model-name 变量,我真的不明白为什么了。

所以,我需要一些帮助来理解如何编写 url_rewriter。

而且我还想知道这是否是此类网站的最佳目录/网址结构,或者是否有更好的目录/网址结构。

任何建议或帮助将不胜感激(因为我真的很困惑)

最佳答案

我在你的规则集中发现了一些错误,我在下面编辑了它们并总结了变化:

RewriteRule ^models\/$ models.php [NC,L]

RewriteRule ^model/([A-Za-z0-9_]+)\/$ model.php?model=$1 [NC,L]
RewriteRule ^model/([A-Za-z0-9_]+)\/page-([^/]+)\/$ model.php?model=$1&page=$2 [NC,L]

RewriteRule ^model/([A-Za-z0-9_]+)\/([^/]+)\/$ model.php?model=$1&sort=$2 [NC,L]
RewriteRule ^model/([A-Za-z0-9_]+)/page-([^/]+)/([^/]+)\/$ model.php?model=$1&page=$2&sort=$3 [NC,L]


RewriteRule ^videos\/$ page.php [NC,L]
RewriteRule ^videos\/page-([^/]+)\.html$ page.php?page=$1 [NC,L]


RewriteRule ^video/([^/]+)\.html$ index.php?id_photo=$1 [NC,L]

RewriteRule ^([^/]+)\/$ category.php?category=$1 [NC,L]
RewriteRule ^([^/]+)/page-([^/]+)/$ category.php?category=$1&page=$2 [NC,L]

RewriteRule ^([^/]+)\/([^/]+)\/$ category.php?category=$1&sort=$2 [NC,L]
RewriteRule ^([^/]+)/page-([^/]+)/([^/]+)/$ category.php?category=$1&page=$2&sort=$3 [NC,L]
  • 规则将自上而下执行,因此模型规则永远不会执行,因为您使用的第一个规则集已经匹配任何请求:model将成为一个类别和model-name将成为排序。要解决此问题,您必须从限制最多的规则开始,以限制最少的规则结束。当请求不是以模型或视频开始时,它最终会尝试在 category 中重写它。 .
  • 在第一个模型/重写规则中,您使用双括号 [,在这种情况下您应该使用一个。
  • 在视频规则中,您忘记声明必要的标志
  • 我注意到您在第一条规则中只允许使用字母数字字符和下划线,但在第二条规则中允许除正斜杠之外的所有字符,我冒昧地更改了这一点。

  • 另请注意,在请求与上述任何一项匹配之前,您需要在每个请求中添加一个带有您的规则的尾部斜杠。如果您希望尾部斜杠可选,您可以替换 /前 $ 与 (\/|)

    关于apache - 搞砸了 url 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61741041/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com