【问题标题】:Hide a folder from the URI with RewriteRule in a .htaccess file在 .htaccess 文件中使用 RewriteRule 隐藏 URI 中的文件夹
【发布时间】:2014-07-24 16:12:06
【问题描述】:

如果您能帮助我构建我的 .htaccess 文件,我将不胜感激。
我想在这里实现的是将域的所有文件和文件夹移动到根子文件夹(“mydomain”),并确保访问者可见的 URL 仍然看起来像

domain.com/file.extention  

而不是

domain.com/mydomain/file.extention 

domain.com/subfolder/file.extention

而不是

domain.com/mydomain/subfolder/file.extention

这是我的文件夹树:

/
  /mydomain
    /subfolder
    index.php
    test.php

这是我当前的 .htaccess 文件:

<IfModule mod_rewrite.c>

# System symbolic links are allowed.
Options +FollowSymlinks

# Runtime rewriting engine enabled.
RewriteEngine On

#
# BEGIN DOMAIN
#

# Make 'mydomain' subfolder the root folder for the domain.
RewriteCond %{HTTP_HOST} ^((www\.)?domain\.com) [NC]
RewriteRule ^\/?$ mydomain/ [NC,L,S=1]

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/?mydomain/ [NC]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ mydomain/$1 [NC,L]

#
# END DOMAIN
#

</IfModule>

这里的问题是当我浏览时它可以工作

domain.com/subfolder/

但不是与

domain.com/subfolder

domain.com/index.php

但不是与

domain.com/test.php

谢谢大家,
马特奥

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting url-rewrite-module


    【解决方案1】:

    将 domain.com/mydomain/file.extention 更改为 domain.com/file.extention

    以此为例

    RewriteRule ^mydomain/(.+)$ http://www.domain.com/ [R=301,L]
    

    但是,如果您仅针对某些页面进行重定向,请检查您是否清除了浏览器缓存或改用另一个缓存

    【讨论】:

    • 无缓存页面技巧运行良好。我不再看到 domain.com/index.php 和 domain.com/test.php 之间有任何差异。谢谢你。我也在考虑添加一个规则来自动添加斜杠 if !(\.[a-zA-Z0-9]{1,5}|/)$ && !/$ 。这应该可以解决 domain.com/subfolder 的问题
    猜你喜欢
    • 2013-01-24
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2015-11-19
    • 2020-01-13
    • 1970-01-01
    相关资源
    最近更新 更多