【问题标题】:.htaccess mod_rewrite in main directory and subdirectory.htaccess mod_rewrite 在主目录和子目录中
【发布时间】:2014-07-26 22:16:40
【问题描述】:

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

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

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

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

我已经搜索了答案,但没有找到任何可行的方法。

感谢您的帮助!

【问题讨论】:

  • 您可以 (1) 只使用 FallbackResource 而不是重写规则块。否则,使用 (2) 另一个条件来限制它,使其不匹配任何包含 / 等的字符串,或者对子目录名称使用 (3) 否定断言。
  • FallbackResource 确实有效,但不在子目录中。我尝试了对子目录名称的否定断言,但我不确定我是否正确地完成了它。这个对吗? RewriteCond %{REQUEST_URI} !^/subdirectory/

标签: php apache .htaccess mod-rewrite redirect


【解决方案1】:
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

【讨论】:

  • 所以这种工作,但我只希望重定向在一个文件夹和根目录中工作。 root/subdirectory/anotherdirectory/ 应该重定向到子目录中的 index.php,root/example/ 应该重定向到根 index.php 文件。
【解决方案2】:

试试

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]

【讨论】:

  • 谢谢!但是您的解决方案仅在两个 .htaccess 文件都使用您的代码时才有效,是否可以使用一个 .htaccess?我遇到的另一个问题是它仅在 MAMP 中无法在我的 Synology 服务器上运行。当我添加这一行时:Options +FollowSymLinks -MultiViews mod_rewrite 工作正常,但我的登录表单中断...
【解决方案3】:

您可以使用像这样的简单解决方案,无需将 .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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2013-07-02
    相关资源
    最近更新 更多