【问题标题】:Rewrite urls friendly with htaccess. how I can use it on my site?用 htaccess 重写 url。我如何在我的网站上使用它?
【发布时间】:2014-06-16 19:35:10
【问题描述】:

我正在使用重写规则重写 htaccess 上的 url,但是当我希望我的网站使用它时,我就卡住了。 我希望我的链接看起来像:

mysite.com/section/this-is-the-title-of-this-section

我使用重写规则来得到这个:

mysite.com/section/?id=longalfanummysite.com/section/longalfanum

那一刻很酷。但我检查了一些网站的 URL,我意识到它们从一开始就有友好的 URL 所以我将 url 更改为:

mysite.com/section/longalfanum-the-title-of-the-section

现在我的链接不像以前那样工作了。

我的 htaccess 看起来像:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    #this is for avoid extra /
    RewriteCond %{REQUEST_URI} ^(.*?)(/{2,})(.*)$
    RewriteRule . %1/%3 [R=301,L]



    RewriteCond %{QUERY_STRING} !^$
    RewriteRule .*/mysite.com/%{REQUEST_URI}? [R=301,L]
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f

    #this is my rule
    RewriteCond %{QUERY_STRING} ^id=(\d+)$
    RewriteRule  /mysite.com/section/$1? [L]
    RewriteRule ^section/(\d+)$ mysite.com/section/?id=$1

显然这不起作用。我错过了一步吗?

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    改变

    RewriteRule ^section/(\d+)$ mysite.com/section/?id=$1
    

    RewriteRule ^section/(.*)$ mysite.com/section/?id=$1
    

    因此它匹配“section/”之后的任何内容 (.*),而不仅仅是数字 (\d+)

    此外,您应该将[L] 标志添加到当前没有它的所有 RewriteRules 以提高效率。

    【讨论】:

    • 好的,我改成了 (.*) 但我的 url 看起来很友好让它看起来友好的 URL?
    • 不,你不能在 .htaccess 中这样做。如果您真的想在 Apache 中执行此操作,则必须在主服务器配置中执行此操作(这不是一件容易的事)。否则,只需在您的应用程序中处理它。
    • 感谢您的回复,如果我在 html 代码中按照我想要的方式更改 URL,如下所示:mysite.com/setion/id-title-of(这种方式不起作用)我可以采取“id”并将其与htaccess一起使用?我发现这项服务htaccess.madewithlove.be 对这项任务非常有用。
    • 是的,我之前提供的 RewriteRule 就是为此而编写的。我不确定问题出在哪里......
    【解决方案2】:

    我的带有 php 的 html 看起来像这样:

    <a href="section/?idN=<?= $rowNot[0]['id_new'];?>"></a>
    

    在网络浏览器中的样子:

    mysite.com/section/?idN=alfanum
    

    我的规则如下:

    RewriteCond %{QUERY_STRING} ^id=(.*)$
    RewriteRule  /mysite.com/section/$1? [L]
    RewriteRule ^section/(.*)$ mysite.com/section/?id=$1
    

    这样我只能得到像 mysite/section/nosensealfanum 这样的 URL

    可以通过 htaccess 获取 new 的标题吗?还是我需要改变从数据库获取新数据的方式?

    谢谢

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      • 1970-01-01
      • 2019-06-22
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多