简单的.htaccess重写URL到同一服务器上的不同目录

时间:2011-08-27 04:38:34

标签: .htaccess mod-rewrite

好的,我在这里一无所知......

我需要将目录结构及其中的所有子目录重写到同一服务器中的目录,但是在目录之前的根目录。

例如:

http://www.mydomain.com/Themes/default/css/folder

在文件夹之后调用所有目录。例如folder/sub_folderfolder/afolder/anotherfolder,它需要在folder目录中包含所有子目录。

应重定向到:

http://www.mydomain.com

如何通过folder路径http://www.mydomain.com/Themes/default/css/folder中的.htaccess文件执行此操作?

请有人帮忙。

谢谢你们:)

当通过PHP调用时,目录结构中的文件仍然需要可以访问该结构,但我不希望人们能够浏览到http://www.mydomain.com/Themes/default/css/folder并显示该文件夹路径中的所有子目录和/或所有的文件。对于该文件夹路径后面的所有子目录也是如此。

我希望能够将.htaccess文件放在服务器上的http://www.mydomain.com/Themes/default/css/folder目录中,但不确切知道要使用哪种代码。

另外,更具挑战性......域名可以更改,所以我宁愿不在.htaccess文件中使用域名,而是使用..或。上一个目录或在.htaccess文件中获取域名的另一种方法。

2 个答案:

答案 0 :(得分:2)

/Themes/default/css/folder中创建一个.htaccess文件并将这些行放在那里(它需要mod_rewrite ):

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ http://%{HTTP_HOST}/ [R=301,L]

它会将所有请求重定向(301永久重定向)到文件夹到主页。如果请求了文件,它将允许它。

如果您想让它适用于文件夹和文件,请删除RewriteCond行 - 它会将所有请求(即使是不存在的网址)重定向到主页

如果您在创建此类文件后会看到“500 Internal Server Error”则是您的服务器配置:可能未启用mod_rewrite或其指令(RewriteRule, RewriteCond,RewriteEngine)不允许放在.htaccess中。在任何情况下 - 检查Apache的错误日志以获取确切的错误消息(它会给出确切的原因)。

答案 1 :(得分:0)