使用RewriteRule在.htaccess文件中隐藏URI中的文件夹

时间:2014-06-04 06:07:08

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

如果你能帮我构建我的.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

谢谢大家,
利玛

1 个答案:

答案 0 :(得分:0)

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

使用此例如

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

但是,如果您仅针对某些页面重定向工作,请检查您是否清除了浏览器缓存或使用其他页面