【问题标题】:Redirects in htaccess from parent and subfolder在 htaccess 中从父文件夹和子文件夹重定向
【发布时间】:2014-12-20 04:20:07
【问题描述】:

在搜索了所有其他解决方案后,我没有找到关于 stackoverflow 的工作示例。

我的主网站会相应地重定向,但是当我想对子文件夹/管理文件夹执行相同操作时,它会继承父搜索模式并且不使用管理文件夹中的登录页面。

Options -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 
RewriteRule ^/?(.*)\ (.*)$ /$1-$2  [R=301,L]

为了允许访问 admin 子文件夹,我有另一个 htaccess 文件:

RewriteEngine Off

为了澄清我确实尝试打开此文件夹 htaccess 以便我可以重定向查询,只有将其关闭已成功访问 admin 子文件夹,但任何尾随查询都返回到主站点。

我在两个 htaccess 文件上都尝试了以下操作

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

在子目录 htaccess 中将其关闭然后重新打开。

RewriteEngine Off
RewriteEngine On

请指教谢谢。

【问题讨论】:

  • 不清楚您在admin 文件夹中遇到什么问题。你能澄清一下这个问题吗?
  • @anubhava - 主站点中的 htaccess 就是上面列出的那个。关闭 admin 文件夹中的第二个 htaccess 后,如果没有任何诸如 site.com/admin/page/ 之类的 url 将继承父 htaccess,它将允许我访问 /admin/index.php。我不希望使用父 htaccess 文件从 admin 文件夹中获取任何内容。我想要任何 site.com/admin/whatever/ 登陆 site.com/admin/index.php

标签: .htaccess mod-rewrite


【解决方案1】:

这样吧:

DocumentRoot/.htaccess

RewriteEngine On
RewriteBase /

# strip spaces
RewriteRule ^/?(.*)\ (.*)$ /$1-$2  [R=301,L]

## add a trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,NE,L]

/admin/.htaccess

DirectoryIndex index.php
RewriteEngine On
RewriteBase /admin/

RewriteRule ^index\.php$ - [L,NC]

# forward everything to index.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]

【讨论】:

  • 优秀。非常感谢。如果可以的话,我会支持你。我在 admin 文件夹中尝试了 /admin/ rewrite base 。我注意到的唯一部分是剥离空间和添加 - 管理员不起作用。我认为无论如何都不需要它。再次感谢。
  • 不客气,很高兴它成功了。如果您需要 /admin/ 中的空格删除规则,请在 RewriteBase /admin/ 行下方添加 RewriteRule ^/?(.*)\ (.*)$ $1-$2 [R=301,L]
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2014-04-03
  • 1970-01-01
  • 2016-08-30
  • 2021-07-09
相关资源
最近更新 更多