【问题标题】:htaccess redirect rule from www.domain.com/?page=news to www.domain.com/newshtaccess 将规则从 www.domain.com/?page=news 重定向到 www.domain.com/news
【发布时间】:2013-12-23 02:58:57
【问题描述】:

我需要将 URL 重定向为

www.domain.com/?page=news --> www.domain.com/news

这是我的 htaccess 文件:

Options -Multiviews
RewriteEngine On
RewriteBase /

# Force search engines to use www.domain.com
RewriteCond %{HTTP_HOST} !^www\.domain\.com$
RewriteRule ^(.*) http://www.domain.com/$1 [R=301,L]

# Specify search friendly URLs
RewriteRule ^http://www\.domain\.com/news/$ /http://www.domain.com/?page=news [L]

请建议我在 .htaccess 文件中使用的确切规则。

提前致谢。

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    您的第二条规则不正确,因为您无法匹配 RewriteRule 模式中的域名。该模式只匹配没有域名和查询字符串的 REQUEST_URI。

    你的第二条规则应该是这样的:

    RewriteCond %{THE_REQUEST} \s/+\?page=([^&\s]+) [NC]
    RewriteRule ^ /%1? [R=301,L,NE]
    
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    
    # Specify search friendly URLs
    RewriteCond %{QUERY_STRING} !(^|&)page=[^&]+
    RewriteRule ^([^/]+)/?$ /?page=$1 [L,NC,QSA]
    

    参考:Apache mod_rewrite Introduction

    【讨论】:

    • 给定的规则不起作用。我需要像这样重定向 www.domain.com/?page=news --> www.domain.com/news。请为此建议规则。 www.domain.com?page=news 仍显示在浏览器中。
    • 伟大的anubhava ..它工作正常。还有一个澄清,是传递动态值的任何方式,而不是提及新闻、关于我们、家庭等,因为我有 40 多个页面要像这样重定向。请帮帮我..
    • 它不工作。似乎 www.domain.com?page=news 在浏览器中。
    【解决方案2】:

    抱歉,我对此一无所知,但我看到我在 facebook 上关注的某个人发布了一个很好的教程: http://www.9lessons.info/2013/11/htaccess-file-tutorial-and-tips.html

    希望这会有所帮助。

    【讨论】:

    • 感谢您的链接,但它不满足我的期望。我需要应该重定向的规则:www.domain.com/?page=news --> www.domain.com/news。请给我建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2019-10-05
    • 2012-09-23
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多