主目录和子目录中的.htaccess mod_rewrite

时间:2014-07-26 22:16:40

标签: php apache .htaccess mod-rewrite redirect

我有一个带有.htaccess文件的主目录,看起来像这样

  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [L]

子目录中的那个看起来与这个相同。我希望.htaccess文件要做的是重定向到每个目录中的索引文件。

因此,如果您访问 main / example ,您将被重定向到主目录中的index.php文件,但是如果您访问 main / subdirectory 您将被重定向到子目录中的index.php文件。

我已经找到了答案,但却找不到任何可行的方法。

感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

尝试

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond $1 -d
RewriteRule ^(.+)/ $1/index.php [L]

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^ index.php [L]

答案 1 :(得分:0)

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/ /$1/index.php [L]

此配置执行以下操作:

如果我们有这个文件

/index.php
/foo/index.php
/var/index.php
/var/boo/index.php

您要求提供以下文件

/foo/hello

你会去:

/foo/index.php

,如果您要求

/var/boo/world

你会去:

/var/boo/index.php

答案 2 :(得分:0)

您可以使用像这样的简单解决方案,无需在任何地方放置.htaccess文件

在您的主目录中放入一个.htaccess文件,保留您的代码

  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [L]

然后添加这两行

  Options All -Indexes
  ErrorDocument 403 http://domain.com/index.php

这两行阻止用户访问该文件夹,并返回法规403,然后将403法规重定向到主目录的index.php的地址