【问题标题】:mod_rewrite url using .htaccess使用 .htaccess 的 mod_rewrite url
【发布时间】:2014-12-21 15:41:53
【问题描述】:

我想做的事:

改变

www.mysitename.com/pages/about

www.mysitename.com/about

到目前为止我所做的尝试:

RewriteEngine on
RewriteRule ^(.*)$ pages/$1

但是当我进入我的网站并单击“关于”部分时,网址仍然是 www.**.com/pages/about。我的服务器上启用了 htaccess,所以这不是问题。

我做错了什么?

【问题讨论】:

  • 你想改变它哪里,究竟是什么? mod_rewrite 仅在 URL 被 Web 服务器解释之前修改它。它不会(也不可能)改变浏览器地址栏中的内容。
  • 好吧——我想我完全误解了 mod rewrite 的作用。我的印象是它“美化了 url”——所以页面不是丑陋的 .com/pages/about,而是被带到 .com/about;如果 mod_rewrite 不是正确的方法,你会建议什么?非常感谢。
  • 只是为了确认一下:mod 重写规则不会(也不可能)改变浏览器地址栏中的内容,对吧?所以它不会把 .com/pages/about 的 url 变成 .com/about? (谢谢你的链接,但我在源代码中找不到我想要的)
  • 对,它不能那样做。如果这就是你想要的,你应该考虑一个简单的header('Location: ...') redirect

标签: .htaccess mod-rewrite web


【解决方案1】:

您可以在 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On
RewriteBase /

# change URL in browser from /pages/about to /about
RewriteCond %{THE_REQUEST} \s/+pages/(\S*) [NC]
RewriteRule ^ /%1 [R=302,L,NE]

# internally forward /about to /pages/about
RewriteRule ^((?!pages/).+)$ pages/$1 [L,NC]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多