【问题标题】:301 redirect without index没有索引的301重定向
【发布时间】:2011-06-20 06:27:02
【问题描述】:

我看到了很多 301 问题,但我还没有找到适合我的解决方案,所以我就在这里发布。

标准的 301 看起来像这样:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.301redirect\.de$
RewriteRule ^(.*)$ http://www.301redirect.de/$1 [L,R=301]

好吧,当我浏览我的网站时,我最终会访问 www.domain.tld/index.php/restofquery。当我浏览 domain.tld 时,我想访问 www.domain.tld/ 并且我也不想在任何其他查询中使用 index.php。所以 domain.tld/articlebla 应该是 www.domain.tld/articlebla。

有什么方法可以做到这一点?

最好的问候。

【问题讨论】:

    标签: .htaccess redirect http-status-code-301


    【解决方案1】:

    要简单地添加www,您可以这样做:

    RewriteCond %{http_host} ^301redirect\.de$ [NC]
    RewriteRule ^/?$ http://www.301redirect.de/ [R=301,NC]
    

    要同时添加其他 url 部分和 www,您可以这样做:

    RewriteCond %{http_host} ^301redirect\.de$ [NC]
    RewriteRule ^(.*?)/?$ http://www.301redirect.de/$1/ [R=301,NC]
    

    如果您的意思是您想要重定向 url 上的原始查询字符串,那么这将起作用:

    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\.301redirect\.de$
    RewriteRule ^(.*)$ http://www.301redirect.de/$1/? [L,R=301]
    

    ? 添加到RewriteRule 的末尾意味着不会添加查询字符串。

    【讨论】:

    • 嘿。我的意思是,当直接浏览 domain.tld 时,服务器/htaccess 应该只重定向到 www.domain.tld。但是如果浏览到 domain.tld/query1/query2/ 等,应该有一个 www。附加在开头但没有 index.php。目前它就像 domain.tld -> www.domain.tld/index.php 和 domain.tld/query1/query2/ -> www.domain.tld/index.php/query1/query2/
    • 非常感谢 ;) 我更新了我的 htaccess,但现在出现内部服务器错误。更准确一点 - 应该有一个 www。无处不在,但 index.php 无处可去。对不起折磨你:(
    • 仍然得到一个内部 :( 我正在使用第二个 :o 有什么问题吗?
    猜你喜欢
    • 2012-01-27
    • 2011-04-07
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2013-01-06
    相关资源
    最近更新 更多