【问题标题】:.htaccess profile rewrite help.htaccess 配置文件重写帮助
【发布时间】:2010-10-09 15:58:24
【问题描述】:

RewriteRule ^user/(.*)/(.*) profile.php?user=$1&v=$2 [L] 适用于 http://10.0.1.5/user/Kevin/wall/

如果我这样做 http://10.0.1.5/user/Kevin/wall 它是 404 的。 如果我这样做 http://10.0.1.5/user/Kevin/ 它是 404 的 如果我这样做 http://10.0.1.5/user/Kevin 它是 404 的

我累了

 RewriteRule ^user/(.*) profile.php?user=$1 [L]
    RewriteRule ^user/(.*) profile.php?user=$1 [L]
    RewriteRule ^user/(.*)/(.*)/ profile.php?user=$1&v=$2 [L]
    RewriteRule ^user/(.*)/(.*) profile.php?user=$1&v=$2 [L]

但它并没有像我想要的那样工作。我希望它适用于所有 4 个可能的 url。我该怎么办?

【问题讨论】:

    标签: apache .htaccess mod-rewrite apache2


    【解决方案1】:

    使用比.* 更具体的模式,例如[^/]+,并使用/?$ 使尾部斜杠可选:

    RewriteRule ^user/([^/]+)/?$ profile.php?user=$1 [L]
    RewriteRule ^user/([^/]+)/([^/]+)/?$ profile.php?user=$1&v=$2 [L]
    

    但我建议只使用其中一种格式(带或不带斜杠),删除或添加斜杠(如果存在或缺失):

    # remove trailing slash
    RewriteRule (.*)/$ /$1 [L,R=301]
    
    # add trailing slash
    RewriteCond %{REQUEST_URI} !-f
    RewriteCond %{REQUEST_URI} !-d
    RewriteRule .*[^/]$ /$0/ [L,R=301]
    

    【讨论】:

    • 网站是否兼有两者真的很重要吗?
    • @Keverw:不,你可以使用任何你想要的 URL。但我只会使用一致的方案。
    • 好的。感谢您的帮助!
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多