在htaccess中获取当前目录名称并防止重定向

时间:2018-10-23 12:03:56

标签: php apache .htaccess mod-rewrite

我有这个 .htaccess 文件:

Options +FollowSymLinks
DirectorySlash On
RewriteEngine On

# Remove trailing slash for non directories
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$ /mydir%1/$1 [R,L=303]

# Make direct files accessible
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !^base.php.*$
RewriteRule ^([^\n]+)|(.*)$ base.php?___ROUTE=$1 [QSA,END]

具有以下重定向行为:

  1. ✔️d.com/mydird.com/mydir/
  2. ✔️d.com/mydir/nothing 运行
  3. ✔️d.com/mydir/nothing/d.com/mydir/nothing
  4. d.com/mydir/exist_dird.com/mydir/exist_dir/?___ROUTE=exist_dir
  5. d.com/mydir/exist_dir/ 运行
  6. ✔️d.com/mydir/exist_file.css 运行
  7. ✔️d.com/mydir/exist_file.css/d.com/mydir/exist_file.css
  

通过 run 我的意思是它响应文件内容或执行base.php?___ROUTE=$1

现在我有一个问题和一个问题

问题

我不知道如何解决重定向号码4。

数字5应该重定向到d.com/mydir/exist_dir

数字4应该执行base.php?___ROUTE=$1而不是重定向

问题

如何在.htaccess中使用当前目录名称,而不是在每个项目中写入其名称?

我的意思是/mydir中的RewriteRule ^(.*)/$ /mydir%1/$1 [R,L=303]

1 个答案:

答案 0 :(得分:0)

我做到了。

如何在以斜杠结尾的非目录上修复重定向

首先,我为移去的斜杠路径创建了more,然后在ENV Variable中使用了它。

RewriteRule