【问题标题】:.htaccess - Add Trailing Slash And Internal Redirect.htaccess - 添加斜杠和内部重定向
【发布时间】:2016-02-18 01:37:05
【问题描述】:

在我的 .htaccess 文件中,我使用的是代码:

RewriteEngine on
RewriteRule ^learn/(.*?)/(.*?)/ /learn.php?lang=$1&topic=$2
RewriteRule ^videos/(.*?)/(.*?)/ /video.php?lang=$1&topic=$2

效果很好。但它适用于http://domain.com/learn/v1http://domain.com/learn/v1/(注意斜线更改)。 我想将非斜线版本重定向到维护上述内部重定向的斜线版本。我尝试添加另一个 RewriteRule 来做到这一点,但它给了我 404。

任何帮助将不胜感激。

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    试试:

    RewriteEngine on
    
    ## Adding a trailing slash
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=302]
    
    # internal rewrites
    RewriteRule ^learn/(.*)/(.*)/$ learn.php?lang=$1&topic=$2 [L,QSA]
    RewriteRule ^videos/(.*)/(.*)/$ video.php?lang=$1&topic=$2 [L,QSA]
    

    【讨论】:

    • 你能解释一下RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=302]这是做什么的吗?我不是很清楚。
    • 我在该规则之上写了一个简短的评论。它会在不是文件的 URL 中添加一个斜杠。
    • 我需要知道该正则表达式选择和处理的内容,因为这不是我的完整 htaccess 文件。
    • [^/]$ 是一个非常简单的正则表达式,它匹配任何不以/ 结尾的东西
    • 你最好把你的整个 .htaccess 放在有问题的地方
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2018-08-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多