【问题标题】:Seo friendly url - Unable to find a way to get the htaccess to rewrite the urlsSeo 友好的 url - 无法找到让 htaccess 重写 url 的方法
【发布时间】:2017-09-29 14:19:41
【问题描述】:

目前,我的网站有这种 url 格式:

https://example.com/blog/news.php?read=article-title-here

我想将此网址更改为: https://example.com/news/article-title-here

请问您知道怎么做吗?我尝试了这种方法,但在浏览器栏中没有看到任何变化(即使在清空缓存之后):

RewriteCond %{QUERY_STRING} ^read=(.*)$
RewriteRule ^news/?$ %1.php? [R=301,L]

另外,htaccess 文件应该写在哪里? 在https://example.com/ 或者 https://example.com/blog/

提前谢谢你!

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    你可以在你的https://example.com/.htaccess中使用:

    Options -MultiViews
    RewriteEngine on
    RewriteBase /
    
    # external redirect from actual URL to pretty one
    RewriteCond %{THE_REQUEST} \s/+blog/news\.php\?read=([^\s&]+) [NC]
    RewriteRule ^ /news/%1? [R=301,L,NE]
    
    # internal forward from pretty URL to actual one
    RewriteRule ^news/(.+?)/?$ blog/news.php?read=$1 [L,QSA,NC]
    

    【讨论】:

    • 非常感谢!你这么好!我注意到的一件事是我必须在 public_html/ 和 public_html/blog 文件夹中添加这些规则,我这样做对吗?我试图从任一文件夹中删除它并得到 404 错误。
    • 问你一个小问题,假设我想重写更多的 url,请问如何添加新规则,因为当我尝试添加更多相同的规则时,它仍然尝试使用第一条规则重写,谢谢。
    • 谢谢!不,通常你应该只把它放在根目录。除非我没有完全理解目标文件的位置。如果您每次都将新规则放在单独的文件夹中(这非常好),您可以将它们放在这些文件夹之后,或者放在相关目录的 .htaccess 中。
    猜你喜欢
    • 1970-01-01
    • 2021-07-06
    • 2015-01-04
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多