【问题标题】:.htaccess - pretty url lost after redirecting non-www to www urls.htaccess - 将非 www 重定向到 www url 后漂亮的 url 丢失
【发布时间】:2013-07-15 12:09:39
【问题描述】:

我已将 .htaccess 301 重定向以将非 www 重定向到 www,这工作正常,但是当使用非 www url 访问页面时,我的漂亮 url 丢失了。

我是这样做的。

Options +FollowSymlinks
RewriteEngine on
Rewritecond %{HTTP_HOST} ^site.com [NC]
Rewriterule ^(.*)$ http://www.site.com/$1 [R=301,NC]
RewriteRule ^([^/]*)/(.*\.html) process/?category=$1&link=$2 [L]

它重定向网址

http://www.site.com/software/page.html 

到

http://www.site.com/process/index.php?category=software&link=page.html

正确地在地址栏中不丢失漂亮的 url www.site.com/software/page.html。

它重定向网址

http://site.com/software/page.html 

到

http://www.site.com/process/index.php?category=software&link=page.html

正确,现在漂亮的 url 丢失了,地址栏中的地址是

http://www.site.com/process/index.php?category=software&link=page.html

代替

http://site.com/software/page.html

在没有 www 的情况下访问页面时如何保持漂亮的 url。

请查看并提出任何建议。

谢谢

【问题讨论】:

    标签: .htaccess


    【解决方案1】:

    我相信您的第一条规则中缺少L 标志。试试这个代码:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    Rewritecond %{HTTP_HOST} ^site\.com$ [NC]
    Rewriterule ^(.*)$ http://www.site.com/$1 [R=301,NC,L]
    
    RewriteRule ^([^/]+)/([^.]+\.html)$ /process/?category=$1&link=$2 [QSA,L,NC]
    

    【讨论】:

    • 你用什么 URL 来测试这个?并在您的问题中转储您的完整 .htaccess。
    • 我使用非 www url http://site.com/software/page.html 为 http://www.site.com/software/page.html 工作
    • 您的解决方案确实有效,我清除了浏览器历史记录和 cookie 现在可以正常工作。问题缺少L 标志
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2019-03-09
    • 2011-11-05
    • 2013-12-20
    相关资源
    最近更新 更多