如何使用.htaccess文件重写子目录的URL?

爱子

我目前正在使用它来使我的网址看起来很漂亮:

ErrorDocument 403 /404.php
ErrorDocument 404 /404.php
Options -Indexes

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>

我终于让它可以工作了(我对此很陌生),但是现在我需要它来为位于主站点子目录中的“子站点”工作。无需重写https://example.com/index.php,而是需要重写https://example.com/sub/index.php

我尝试了一些诸如更改RewriteBase和RewriteRule的操作,但是没有成功。

可以肯定的是,我应该能够将另一个.htaccess放在子目录中,并期望它重写example.com/sub的URL,对吗?

提前致谢!

编辑我将例外添加到主.htaccess中,如下所示:ErrorDocument 403 /404.php ErrorDocument 404 /404.php Options -Indexes

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^(/controle|/controle/|/voting|/voting/.*)$
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>

不过,我还是不知道该怎么投入的子目录中的.htaccess,同样一个不工作,我试图改变之类的东西RewriteBase /RewriteBase /subdir1/

怀特先生

可以肯定的是,我应该能够将另一个.htaccess放在子目录中,并期望它重写的url example.com/sub,对吗?

是。/subdir/.htaccess默认情况下,文件中的mod_rewrite指令将完全覆盖父/根.htaccess文件中的mod_rewrite指令但是,您将需要重新定义ErrorDocument指令以覆盖根。

RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f

需要说明的是,在这两个条件下,您是否希望偶尔从请求的子目录中提供index.htmlindex.php(DirectoryIndex)文档,而不是将请求路由到/index.php文档根目录中?在这种情况下,简单地检查该请求是否未映射到目录(即RewriteCond %{REQUEST_FILENAME} !-d会更常见(并且略有最优)。除非要/index.php在文档根目录中路由到某些物理子目录

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]
</IfModule>

这些指令可以稍作简化-如果您要将相同的指令应用于子站点/subdir(并服务/subdir/index.php,这将对您有所帮助

RewriteBase完全删除该指令。相对替代字符串,即。index.php,则相对于.htaccess文件所在(或继承)的目录。

您也不需要<IfModule mod_rewrite.c>包装器。有关此的更多信息,请参见对网站管理员堆栈中以下问题的回答https : //webmasters.stackexchange.com/questions/112600/is-checking-for-mod-write-really-necessary

这样,上面可以写成:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]

(并注意我上面关于用目录检查代替两个条件的评论)。

现在,你可以简单地精确复制相同的指令到/subdir/.htaccess文件,这些现在将请求路由到/subdir/index.php替代,覆盖父mod_rewrite的指令。

无需复制Options -Indexes,除非您想更改此选项。

或者,如果您想应用完全相同的指令(但相对于/subdir),则只需在/subdir/.htaccess文件中启用mod_rewrite继承即可例如:

# /subdir/.htaccess

ErrorDocument 403 /subdir/404.php
ErrorDocument 404 /subdir/404.php

RewriteEngine On
RewriteOptions Inherit

实际上的作用RewriteOptions Inherit是从父配置(即)“复制” mod_rewrite指令。/.htaccess在根目录中,位于当前/subdir/.htaccess文件中指令的后面重要的是要弄清楚伪指令是“复制的”,它们不能像在根/.htaccess文件中一样就地运行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用.HTACCESS重写子目录中的PHP文件

来自分类Dev

.htaccess如何将根URL重定向到子目录文件,如何重写为干净的URL并且不影响子域?

来自分类Dev

使用.htaccess重写到Wordpress子目录?

来自分类Dev

使用 htaccess 在子目录中重写新规则

来自分类Dev

如何返回不带子文件夹/子目录的URL(使用PHP而不是htaccess)

来自分类Dev

如何从Apache URL重写条件中排除子目录

来自分类Dev

使用.htaccess将子目录重写为根目录,但保留对其他子目录的访问权限

来自分类Dev

htaccess-允许多个域来源,强制使用https,强制使用www,用子目录重写url

来自分类Dev

如何删除.htaccess文件中的特定子目录

来自分类Dev

htaccess用于使用子目录文件的主域

来自分类Dev

htaccess重写子目录中的get参数并使用php检索

来自分类Dev

.htaccess 重写以使用 http/https 将别名重定向到根域子目录

来自分类Dev

如何将PHP + Slim URL Mod重写到子目录

来自分类Dev

使用Episerver平台将子目录重写为URL字符串

来自分类Dev

如何使用.htaccess重定向到子目录?

来自分类Dev

如何使用 URL 遍历目录和子目录

来自分类Dev

如何从URL删除子目录?

来自分类Dev

如何删除子目录中的文件

来自分类Dev

.htaccess如何将url参数重定向到子目录

来自分类Dev

使用.htaccess将子目录重定向到根URL

来自分类Dev

使用子目录时如何解决文件访问?

来自分类Dev

如何在GoDaddy上使用.Htaccess将根文件夹重定向到子目录并隐藏它?

来自分类Dev

如何遍历目录中的子目录并计算python中子目录中的文件

来自分类Dev

如何使用Java的目录流仅在目录中而不是其他子目录中获取文件/子目录

来自分类Dev

我需要使用子目录和查询字符串进行动态URL重写

来自分类Dev

我需要使用子目录和查询字符串进行动态URL重写

来自分类Dev

Python3如何导入导入子目录文件的子目录文件?

来自分类Dev

使用DIR命令显示带文件的子目录...抑制不带文件的子目录

来自分类Dev

使用.htaccess将所有文件/目录重定向到子目录,但不包括主页

Related 相关文章

  1. 1

    如何使用.HTACCESS重写子目录中的PHP文件

  2. 2

    .htaccess如何将根URL重定向到子目录文件,如何重写为干净的URL并且不影响子域?

  3. 3

    使用.htaccess重写到Wordpress子目录?

  4. 4

    使用 htaccess 在子目录中重写新规则

  5. 5

    如何返回不带子文件夹/子目录的URL(使用PHP而不是htaccess)

  6. 6

    如何从Apache URL重写条件中排除子目录

  7. 7

    使用.htaccess将子目录重写为根目录,但保留对其他子目录的访问权限

  8. 8

    htaccess-允许多个域来源,强制使用https,强制使用www,用子目录重写url

  9. 9

    如何删除.htaccess文件中的特定子目录

  10. 10

    htaccess用于使用子目录文件的主域

  11. 11

    htaccess重写子目录中的get参数并使用php检索

  12. 12

    .htaccess 重写以使用 http/https 将别名重定向到根域子目录

  13. 13

    如何将PHP + Slim URL Mod重写到子目录

  14. 14

    使用Episerver平台将子目录重写为URL字符串

  15. 15

    如何使用.htaccess重定向到子目录?

  16. 16

    如何使用 URL 遍历目录和子目录

  17. 17

    如何从URL删除子目录?

  18. 18

    如何删除子目录中的文件

  19. 19

    .htaccess如何将url参数重定向到子目录

  20. 20

    使用.htaccess将子目录重定向到根URL

  21. 21

    使用子目录时如何解决文件访问?

  22. 22

    如何在GoDaddy上使用.Htaccess将根文件夹重定向到子目录并隐藏它?

  23. 23

    如何遍历目录中的子目录并计算python中子目录中的文件

  24. 24

    如何使用Java的目录流仅在目录中而不是其他子目录中获取文件/子目录

  25. 25

    我需要使用子目录和查询字符串进行动态URL重写

  26. 26

    我需要使用子目录和查询字符串进行动态URL重写

  27. 27

    Python3如何导入导入子目录文件的子目录文件?

  28. 28

    使用DIR命令显示带文件的子目录...抑制不带文件的子目录

  29. 29

    使用.htaccess将所有文件/目录重定向到子目录,但不包括主页

热门标签

归档