【问题标题】:Htaccess remove WWW and Slash + 301 redirectHtaccess 删除 WWW 和 Slash + 301 重定向
【发布时间】:2017-07-27 17:01:50
【问题描述】:

我无法构建 301 重定向重写规则来从域名中删除 WWW 并从 URL 中删除斜杠。

提前感谢您的帮助。

例子:

www.domain.com/      to  domain.com
domain.com/          to  domain.com
domain.com/page/     to  domain.com/page
domain.com/page.php  to  domain.com/page

我的代码:

RewriteCond %{HTTP_HOST} ^(www.)?domain\.com$ [NC]
RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [R=301,L]

RewriteRule ^/(.*)/$ /$1 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite


    【解决方案1】:

    你可以用这个:

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule ^ http://example.com%{REQUEST_URI} [NE,L,R]
    #remove trailing slash
    RewriteRule ^(.+)/$ /$1 [L,R]
    #remove .php ext
    RewriteCond %{THE_REQUEST} /([^.]+)\.php [NC]
    RewriteRule ^ /%1 [L,R]
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*?)/?$ /$1.php [L]
    

    请注意,这不会从现有目录中删除尾部斜杠。当您请求现有目录时,Apache 会添加一个斜杠。如果要删除此斜线,则需要在 htaccess 中使用以下指令

    DirectorySlash off
    

    这告诉 apache 忽略斜杠,您可以使用或不使用尾部斜杠访问现有目录。

    【讨论】:

    • 感谢您的帮助。 www 和斜线被很好地删除,但 cons 将我重定向到具有可见 .php 的页面。有没有办法隐藏 .php 扩展名?
    • 我为您的 .php 文件添加了一条规则。请重新加载页面以查看它。
    • 非常感谢您的帮助。我将继续查阅 Apache 文档以更好地了解标志的使用。
    猜你喜欢
    • 2014-04-09
    • 2016-01-02
    • 2015-08-06
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多