【问题标题】:How do I mod_rewrite my URL to hide the subfolder?如何修改我的 URL 以隐藏子文件夹?
【发布时间】:2010-12-24 04:55:50
【问题描述】:

我的网址是:

http://website.com/folder/blah.php

如何编写重写规则以便请求:

http://website.com/blah.php

被静默重定向到 /folder/ ?

【问题讨论】:

    标签: apache url .htaccess mod-rewrite


    【解决方案1】:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(.*)$ /folder/$1 [L]
    

    【讨论】:

    • 这个答案正是我想要的;为了在用户访问 mywebsite.com/page.php 时显示 mywebsite.com/blog/page.php 的内容,我一直发现的只是重定向到 mywebsite.com/page.php 的代码,因此会出现 404 错误!谢谢,尽管这不是我的问题
    【解决方案2】:

    真的吗?

    RewriteRule ^/blah.php /folder/blah.php
    

    不适合你?

    另见

    http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriterule

    编辑,根据评论...

    如果你当前的规则是

    RewriteRule ^/(.*)$ /dms/$1
    

    那么您可能应该在它前面加上一个条件,如果该规则已经应用,则该条件将不匹配。例如

    RewriteCond %{REQUEST_URI} !^/dms
    RewriteRule ^/(.*)$ /dms/$1
    

    否则你最终会循环

    blah.php -> /dms/blah.php -> /dms/dms/blah.php -> /dms/dms/dms/blah.php -> 等

    【讨论】:

    • blah.php 就是一个例子。我需要重定向多个文件。我试过RewriteRule ^/(.*)$ /dms/$1 但它不起作用
    • @tom,什么是“不工作”?如果这是您唯一的规则,那么您似乎处于无限循环中。第一次重写后,重写后的 URL 会再次匹配,再次被重写。
    猜你喜欢
    • 2015-04-09
    • 2015-06-18
    • 2017-06-06
    • 2017-11-01
    • 1970-01-01
    • 2014-06-05
    • 2018-09-18
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多