htaccess mod_rewrite:将root重定向到文件夹

时间:2011-06-16 09:48:08

标签: .htaccess

当我拨打网页的 root 时,我收到错误403:

禁 您无权访问此服务器上的/。

我的htaccess看起来像:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/$

RewriteRule (.*) dir/file.php

Options -Indexes

如何将根目录重定向到文件夹,没有错误403? 而且没有失去

的功能
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d

2 个答案:

答案 0 :(得分:1)

重定向所有内容,但以下情况除外:

  • 现有文件
  • 现有的目录中带有index.php

.htaccess内容:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /special/index.php
RewriteRule ^$ /special/index.php [QSA,L]
Options -Indexes

答案 1 :(得分:0)

最有可能(根据我的经验),您没有在请求目录时执行的默认文件。

1)您可能需要将此指令添加到.htaccess中。这将告诉Apache在请求目录时执行index.php。

DirectoryIndex index.php

2)确保此目录中存在index.php,否则您将看到403错误。

“我如何将根目录重定向到文件夹”究竟是什么意思?如果您请求网站的根文件夹,则会执行/special/index.php文件的规则(例如http://example.com/

RewriteRule ^$ /special/index.php [QSA,L]

<强>更新

RewriteRule ^mydir/(index\.php)?$ http://www.example.com/ [R=301,QSA,NC]

这将告诉Apache 重定向(在浏览器的地址栏中更改网址)从http://www.example.com/mydir/index.phphttp://www.example.com/mydir/http://www.example.com/

RewriteRule ^$ mydir/index.php [QSA,L]

当您点击根文件夹(例如/mydir/index.php)而不更改地址栏中的URL时,这将告诉Apache执行http://www.example.com/

如果您希望它与现有规则一起使用,则必须将这两条规则置于其他规则之上 - 例如,在RewriteBase /之后