【问题标题】:Two Part SEO Friendly URL [closed]两部分 SEO 友好 URL [关闭]
【发布时间】:2012-03-03 18:40:56
【问题描述】:

我需要一个 SEO 友好的 URL 来处理一些小事情。 当前网址看起来像mysite.com/ny.php?c=[COUNTY]&t=23

'c' 是县名,'t' 是城镇的 id 号。

我在上一个问题中找到了这个解决方案:

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteRule ^blog\/([0-9]+)\/.*$ /blog.php?post=$1 [L]
</IfModule>

/blog.php?post=10 得到/blog/10/any-old-bit-of-text/

我怎么能用这样的东西,而且里面还有县。 那么mysite.com/ny.php?c=[COUNTY]&amp;t=23 会变成mysite.com/ny/[COUNTY]/23/town-name 吗?

【问题讨论】:

    标签: mod-rewrite seo


    【解决方案1】:

    给你:

    RewriteRule ^(ny)/(.+)/(\d+)/(.+)/?$  /$1.php?c=$2&t=$3 [L,QSA]
    

    仅供参考 QSA 标志是强制性的,因为您正在更改查询字符串。

    即使在:

    RewriteRule ^blog/([0-9]+)/.*$ /blog.php?post=$1 [L,QSA]
    

    【讨论】:

    • 我从未在教程中看到过 QSA 标志。你确定这是强制性的吗?
    • @bozdoz 如果您不知道,请不要发表评论!先读:Flag QSAApache Docs
    • 无论如何,+1 建议 QSA。
    • @Tim 你有什么错误吗?
    • @Tim 你还有其他重写规则吗?因为ny 应该不是问题。
    【解决方案2】:

    如果我理解您提出的问题,您需要 mod_rewrite 代码。

    我相信会是这样的:

    <IfModule mod_rewrite.c>
    RewriteEngine on
    
    RewriteRule ^ny/(.*?)/([0-9]+)/.*$ ny.php?c=$1&t=$2 [L]
    </IfModule>
    

    注意:我很确定您不需要转义正斜杠。如果 ny.php 在主目录中,则它前面不需要正斜杠。

    【讨论】:

    • 好得令人难以置信@bozdoz。它似乎不起作用。无论如何,我是否可以显示它试图重定向到的 URL?意思是,我可能希望它转到ny.php/?c=Orange&amp;t=5,实际上它正试图重定向到ny.php//?c=Orange&amp;t=5 或添加空格之类的东西。
    • 您是否收到错误消息?它把你带到了哪个页面?有任何迹象表明它正在工作吗?可能会有一些问题。您的服务器可能要求您重写基本 URL,因此您可能必须在打开引擎后包含“RewriteBase /”。此外,它可能格式不正确。查看您的编辑程序是否可以检测 .htaccess 文件的格式,和/或更改格式。
    • 感谢@bozdoz 的回复。我知道 mod_rewrite 正在工作。我使用维护页面的重定向对其进行了测试。当我输入“更清洁”的网址时,它只是 404 就在我身上。
    • 所以你可以重写 URL 但这个特殊的重写规则不起作用?
    • 尝试通过输入以下代码行来记录错误,可在此站点上找到:easymodrewrite.com/guide-logging
    猜你喜欢
    • 2011-04-02
    • 2016-01-18
    • 2014-07-09
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2012-12-20
    • 2014-07-14
    • 2017-03-21
    相关资源
    最近更新 更多