【问题标题】:How to insert part of url via htaccess如何通过 htaccess 插入部分 url
【发布时间】:2016-08-15 21:10:28
【问题描述】:

我有这样的旧网址:

http://example.com/news/newscategory/77654

而且应该改写成这样的 URL 结构:

http://example.com/news/newscategory/id/77654

所以这里的新闻是静态的,因为它是文件夹。新闻类别可以是别的东西(多个类别)。我想将用户(301)重定向到带有 id/ 部分的新 url。

我通过 php 获取 url,其中 news 是 key,newscategory 是 value,id 是 key,最后的 number 是 value。

我为此使用了这个 htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>

然后我使用一些 php 库来获取值。

编辑:我要问的是我想将用户从第一个 url 重定向到第二个,以便我可以获取 id。

第一个链接已经生效,但我仍然有指向旧 url 结构的链接,这些链接指向类别视图。实时网址:

旧结构:http://www.autonet.ee/uudised/paevauudised/77665

新结构:http://www.autonet.ee/uudised/paevauudised/id/77665

旧的应该将用户重定向到新的链接。

【问题讨论】:

  • 您是在寻求帮助编写 Apache RewriteRules 以将 newscategory 和数字 id 转换为 index.php 的 GET 变量,还是在编写将解析原始查询的 PHP 组件时寻求帮助细绳?您的问题似乎没有提出实际的 question,虽然您已经包含了一些 Apache 配置,但您没有包含代码,或者您遇到的问题或您在哪里的解释'想结束。请edit your question 并添加这些重要的部分。

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

你可以使用:

RewriteEngine On

# add /id/ in /news/... URLS
RewriteRule ^(news/[^\w-]+)/(\d+)$ /$1/id/$2 [R=301,L,NC]

# front controller rule    
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

【讨论】:

    【解决方案2】:

    如果我理解正确,试试这个规则

    RewriteRule ^([.*])/([.*])/([.*])/([.*])$ index.php?$1=$2&$3=$4
    

    如有遗漏请说明。

    编辑

    好的,根据你的消息和 id 是静态的,但它们的值是动态的,请尝试以下规则

    RewriteRule ^(news)/([.*])/(id)/([.*])$ index.php?news=$1&id=$2
    

    【讨论】:

    • 感谢您的回答。那是重定向 /1/2/3/4/ 到常规获取 url。我需要将用户从example.com/news/newscategory/77654 重定向到example.com/news/newscategory/id/77654,这样我就可以获取 id 参数。该网站的旧代码使用没有id的url结构,新的使用它与id。因此,当用户访问旧网址时,他不会获得单个新闻项目,而是作为 id 的类别没有作为值传递。我的 htaccess/php 代码让我可以选择拥有 /key/value/key/value/ url,我想使用它。
    • 类似这样的东西:stackoverflow.com/questions/14490416/… 但在我的情况下,RewriteRule ^([^/]+)/(.+)$ /$1/$2/id [R=301,L] id 被添加到最后,我想在 url 的最后一部分之前添加它。我对正则表达式很不好:(
    • @Abhishekgurjar,你认为([.*]) 会匹配什么?
    猜你喜欢
    • 1970-01-01
    • 2016-10-16
    • 2017-10-08
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多