【问题标题】:How to rewrite urls using htaccess?如何使用 htaccess 重写 url?
【发布时间】:2011-03-06 02:46:18
【问题描述】:

使用htaccess如何转这种类型的网址:

http://www.mysite.com/page.php?slug=hello-world

进入这种类型:

http://www.mysite.com/page/hello-world

不仅是这一个 url,而是所有从第一种格式到第二种格式的 url。

【问题讨论】:

    标签: .htaccess url-rewriting


    【解决方案1】:

    如果第二个是您希望人们看到的 URL,请使用:

    RewriteRule ^page/(.*)$ /page.php?slug=$1
    

    如果反过来:

    RewriteRule ^page\.php?slug=(.*)$ /page/$1
    

    编辑:另外,请确保在任何 RewriteRules 之前您的 .htaccess 中有以下内容:

    RewriteEngine On
    

    【讨论】:

    • 这对我不起作用,我将您发布的第一个代码块放在一个 .htaccess 文件中,该文件放在我的 www 文件夹的根目录下。然后我尝试通过输入mysite.com/page/hello-world 来访问该页面,但没有成功。
    • 是的,我在声明中添加了重写引擎,但它仍然返回 404 page not found 错误:(
    • 我刚试过,效果很好。是否有任何重定向对您有用? mod_rewrite 启用,.htaccess 没有被忽略?
    【解决方案2】:

    您可以参考herethis

    这是我对您的解决方案的想法:

    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^slug=[^/]+$ [NC] 
    RewriteRule ^page\.php$ http://www.mysite.com/page/$1? [R=301,L] 
    

    【讨论】:

    • 当我输入 mysite.com/product.php?slug=hello-world 时,这段代码的作用是重定向到 mysite.com/product,这当然是找不到的。如果我输入 mysite.com/page/hello-world 它也会导致 404。
    • 您能否详细说明您的问题? “转”这个词不清楚,你的意思是前端重定向/服务器重定向吗?最好在url中说明要更改的参数...
    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2012-10-06
    相关资源
    最近更新 更多